|  Rank  | CA Software |   Universe Size   |  Seconds  | FPS |  MCUPS  |
| 1 | SARCASim2 dense (C/C++ software) | 800 by 800 | 9.0 | 111 | 71 |
|  1100 by 1100  | 16.7 | 60 | 72 | ||
| SARCASim2 sparse | 800 by 800 | 11.5 | 87 | 56 | |
| 2 | Modern CA Java 2 VM | 800 by 600 | 12 | 83 | 40 |
| 800 by 800 | 17 | 59 | 38 | ||
| 1100 by 1100 | 31 | 32 | 39 | ||
| --- the useability gap --- | |||||
| 3 |  Modern CA MS VM  | 800 by 600 | 37 | 27 | 13 |
| 4 |  MCell (Delphi SW)  | 800 by 600 | 47 | 21 | 10 |
| 5 |  MJCell MS VM | 800 by 600 | 90 | 11 | 5 |
| 6 |  MJCell Java 2 VM | 800 by 600 | 125 | 8 | 4 |
Modern Cellular Automata's Java software is comparable to within about a factor of two in speed with fast C or C++ cellular automata software. The free Java 2 VM from Sun Microsystems or a good Java JIT compiler is absolutely required to achieve this level of outstanding performance. Unfortunately the version of Java which Microsoft has for so long shipped with Internet Explorer doesn't come close to fulfilling this need. I recommend you augment it with Sun's free Java 2. Installing Java 2 tripled performance for me. The installation will allow you to easily switch back and forth to and from the Microsoft Java VM should you decide you want to do some benchmarking of your own or use MJCell efficiently.
The cellular automata software benchmark tests consisted of measuring the times it took to complete 1000 generations of the Brian's Brain three state cellular automata rule. All tests used one cell to one pixel zoom. All tests were run at the fastest possible speed settings. The Java 2 VM is release 1.4.2. The Microsoft Java VM is the one which came with Internet Explorer on my year old Windows PC. The PC is a 1.6 GHz Pentium 4 box running Windows 2000. A 1600 by 1200 monitor setting with 32 bit colors was used as this color depth seems to maximize Java performance.
FPS is the update rate in frames (or generations) per second. MCUPS are mega cell updates per second, the number of times in a second that a cellular automata simulator can update and fully display 1,000,000 cells. MCUPS provide a good useability metric for cellular automata implementations.
SARCASim Squared is some of my free Windows cellular automata software written in C and C++. For Brian's Brain it is restricted to square universes. Each of SARCASim2's dual cellular automata interpreters was measured. DirectX support was disabled to make the tests more fair. As SARCASim2's meters are accurate to better than a tenth of a second they were used as the source of its timing measurements. As far as I know SARCASim represents the current state of the art for fast Brian's Brain simulation in a windowed environment. I'm unaware of any other Windows software which approaches its speed for this task.
The MCell Windows software was written in Borland Delphi. Its MJCell Java relative restricts universe size to 800 by 600, so this was a commonly tested size. For MCell and MJCell the version of Brian's Brain used was the one which is a member of the Generations family of rules. The border wrapping features of MCell and MJCell were disabled.
Modern CA is the free Java cellular automata software which powers this site. With Sun's Java 2 VM it seems that 800 by 600 is a lower bound for usable universe size, as smaller universes lead to update rates in excess of a typical monitor's refresh rate. Modern CA can currently run with a 2000 by 2000 universe (soon to be 4000 by 4000 or whatever a given Java VM will allow).
You can benchmark your own combination of Java VM and computer by making sure first of all that the entirety of the following 800 by 600 cellular automata is visible on your computer's screen and then by timing the interval between resets, which occur every 1000 generations. Look up your measurement in the tables below to see how your combination of computer and Java VM compares. My aging 1.6 GHz Pentium manages a reset every 12 seconds or so with Sun's Java 2 VM.
The measurements provided on this page indicate that there is still a substantial amount of room for improvement in Java JIT compiler technology. Having written both I have reason to believe that a really good JIT compiler would enable my specialized Modern CA Java software to outperform my more general purpose SARCASim2 C++ software.