Fungicide rankings

Here are the current Fungicide rankings for a selection of interpreters. You may skip ahead to the results if you wish.

Page history

2010–04–07

2010–04–05

Interpreters benchmarked

Details about the different interpreters can be read over at the Mycology results comparison, this is just a listing:

CCBI 1.0.20 was included just to compare against 2.0 and will be dropped from any future runs.

Interpreters were compiled with the maximum optimization settings they offered in their standard build system. For those that don’t optimize at all by default (Rc/Funge–98), or don’t have a build system for my platform (Stinkhorn), I simply used gcc -O3 -march=native -DNDEBUG.

All optional features were also enabled, with the one exception being cfunge’s HARDENED, which enables generic security-related things like stack smash protection.

It’s worth mentioning that this implies that more speed can be wrung out of at least CCBI 2.0, since features like support for the TRDS fingerprint add noticeable amounts of extra work even when they aren’t being used.

Language versions

Environment

The machine used for benchmarking was an Intel Q9550 clocked to 3.16 GHz, with 8 Gio of RAM and running Linux 2.6.33. All executables involved (the interpreters themselves or the interpreters’ interpreters, such as perl and python) were x86–64 ELF binaries.

Results

Plots are in the SVG format: if your browser can’t handle it, upgrade to a newer version or switch to something more capable, as appropriate; or simply download them and view them separately.

In tables, the best result is strongly emphasized.

Downloads

If you want to store the results for your own local perusal, downloads are available:

Note on misbehaviour

To start with, I note a few problems that skew the results a bit:

Summaries

First a few cactus plots: the vertical axis displays the maximum amount of resources (time or memory) used to solve the corresponding number of benchmarks. For example, if at x=50 CCBI is at y=600 seconds, then given 600 seconds of time, CCBI could solve any (not all) of those fifty benchmarks.

All time measurements are in seconds (s) and all memory measurements are in mebioctets (Mio).

Cactus plot for time used. Cactus plot for memory used.

Unfortunately some interpreters are so fast that one can’t easily see what’s going on in the bottom right corner of the time plot. Here’s a zoomed in version:

Bottom right corner of the cactus plot for time used, zoomed in.

Lastly, a table. “Ran” refers to the number of benchmark sets which were either successfully completed or terminated due to timeout: this varies only due to the issues noted earlier.

Interpreter Ran Total time Total memory Time ratio Memory ratio Maximum time Maximum memory Time ratio Memory ratio
ccbi2–3274234.24810.31.001.0051.1904.51.011.00
ccbi2–6474247.78249.21.061.7150.71807.51.002.00
cfunge–32743628.542323.515.498.802318.54904.845.715.42
cfunge–64743834.148426.016.3710.072403.45787.047.396.40
stinkhorn7412888.240035.055.038.32timeout4920.2timeout5.44
rcfunge274153968.06554.2657.461.36timeout1035.8timeout1.15
rcfunge174154831.06540.7661.151.36timeout1040.6timeout1.15
language-befunge74173077.042468.2739.068.83timeout5476.8timeout6.05
ccbi16940190.854413.8171.6211.31timeout5174.1timeout5.72
pyfunge4210281.227918.143.905.804786.75197.194.385.75

Details

For each benchmark set, there are two line plots: the other plots time against the problem size (whose meaning is benchmark-specific: see the Fungicide page for that information), and the other plots memory usage against the problem size. In addition to the line plots, there is a summarizing table with some numeric data.

Results for each individual problem size are also displayed: in the form of a line plot of memory usage versus time elapsed, and a table showing the measurements garnered. Note that the “ran” value here depends on the time elapsed for the first run (as described at the Fungicide page) and variations in it are to be expected.

Note that logarithmic axes are used almost throughout!

Navigation:

Please use this permalink when linking to this page.

This page is part of the personal web site of Matti Niemenmaa (contact).