The development version of Racket now supports an incremental
garbage-collection mode that can eliminate long pauses in a program.
For example, incremental mode is useful for avoiding pauses in games
and animations.

For more information, see

  http://goo.gl/rYjTIi

You can try out incremental mode in a snapshot build:

  http://pre.racket-lang.org/


The `2htdp/universe` library has been updated to request incremental
mode, so a `big-bang` program will automatically use it. The programs
that I've tried experience GC pauses that are bounded by 10ms or so
(when run outside of DrRacket). In v6.3, the same programs see a pair
of 130ms pauses every 2-3 minutes.

As another example, my son Oliver has a Pict3D-based game that now runs
without big pauses:

  https://spaceorbs.weebly.com/
  https://www.youtube.com/watch?v=mP8ud9Yztz8

The game uses a fork of Pict3D (github.com/mflatt/pict3d) where I've
added a `(collect-garbage 'incremental)` call. That changes also makes
animations in my Pict3D-based talk run without big pauses.

For Oliver's game, each GC pause is usually below 16ms on his machine,
but sometimes between 16ms and 32ms. As a result, the game is still
dropping frames, so it's not yet as good as we want --- but that's much
better than before, and the game is comfortably playable. Further
improvement might be just a matter of tuning the implementation of
incremental mode.


There's still room for improvement overall, and your mileage may vary.
If you have an application that needs shorter GC pauses and the current
implementation of incremental mode doesn't work well enough, I'm
interested to hear about it.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to