Hopefully the benchmarks game will one day include those JIT variants. V8 is there, but sadly for example PyPy, HHVM (Facebook's PHP TJIT) and LuaJIT are not.
removed PyPy
removed the clear overview table that showed all languages, keeping only the barely visible gray bar charts with vertical text (why not horizontal bar charts, they can be scrolled and read without head tilting)
refuses to add LuaJIT and other languages
responds to most change inquiries with "publish your own version" which probably means that he doesn't really care about the project anymore
As a result, the spirit of the benchmarks game was lost a long time ago as its made less fun with each iteration.
Go do!
It doesn't seem like the code was originally written to be understood and modified by others and its not fully documented. As such your claim that its simple to fork it isn't really valid. (However I'm willing to admit the possibility that the configuration complexity is not easily avoidable)
I agree that its far from easy to write a benchmarks game, setup a test environment and invest oh-so-many CPU cycles into running the tests periodically. But I wouldn't go around telling people that forking the original is easy either - that would be very misleading.
Much will have to be done to improve the current engine to make it easier to fork. I'm seriously considering doing that (or alternatively making a new benchmarks game from scratch with the intent of making it easy to configure and fork)
Some people download the scripts and make measurements straight-away, as always YMMV.
1) REQUIREMENTS
Willingness to read the README
Willingness to write ini file name=value properties
Willingness to (sometimes) write make commands
Install Python 2.5+ (these are Python scripts)Without setting up the language environments? I doubt it. Some highlights:
3) LINUX QUICK START [ WIN32 QUICK START ]
3.1) unzip in ~ directory [ unzip in c:\ ]
Requiring a path? Very poor. *** TO BE CONTINUED ***
Oh so its not fully documented, but its easy to use straight away...I'll take the bite. Lets try and add luajit and compare it to lua.
> 12.1) In the [tools] section of the ini file, define a name that will substitute for the location of the new language implementation.
Where is that INI file? The README doesn't say. Oh its my.linux.ini (its not mentioned anywhere in the document).
> For example
[tools]
PYTHON3 = /usr/local/src/Python-3.2/bin/python3.2
Fair enough, lets add my current luajit LUAJIT = /usr/local/bin/luajit
> 12.2) Choose a file extension to identify programs
> and measurements made with the new language
> implementation, for example - python3.Okay, picking .luajit
> 12.3) In the [commandlines] section of the ini file, define a command line that will be used to run program source code files that have the new file extension you chose. > For example, for file extension python3
[commandlines]
python3 = $PYTHON3 %X %A
No comment on what %X or %A may mean - they could mean anything, really. Of course %X is the source (or built) file and %A are the arguments. Easy enough. luajit = $LUAJIT %X %A
> 12.4.1) EITHER alias existing source code files that have a different file extension with the new file extension, in the [alias] section of the ini file.
> For example, re-use all source code files with file extension python but make measurements identified with file extension python3 [alias]
python = python3
So let me get this straight, to define the "python3" alias, I need to add the "python" key to the alias section and set it to "pyton3". Definitely not intuitive, I would rewrite this to be reversed.But okay, I'll define the luajit alias
[alias]
lua = luajit
> 12.5) Run the bencher.py script.Running.
bencher release 0.9
gtop import failed - measure cpu & elapsed time
Wed 21:22:51 .....OK .....nbody.python [2]
Wed 21:22:58 .OK .....regexdna.python [1]
What, only python? Oh, I need to copy the programs from the "bench" dir. Where in the readme does it say that? Nowhere.Okay, did that, re run the script, and it runs all nbody and regexdna benchmarks, and none of the others. Why?
Going back to my.linux.ini. Could it be "onlydirs" perhaps? So I should add all the items in onlydirs, lets try that.
Okay, now its working - at least for the extensions that have a command defined. Its time to wait...
But wait, it complained about gtop? Why? Oh, it uses an old way of importing GTop, the new way is to use the introspected bindings
from gi.repository import GTop
lets patch uselinux.py Wed 21:55:42 .EMPTY pidigits.luajit
of course, I had to remove everything in tmp/* before re-running the test, otherwise it thinks there is "nothing to be done".Okay, that didn't quite work. Lets forget about gtop for now and look at the results we got without it
> 6) LOOKING AT THE MEASUREMENTS > ~/bencher/summary/all_measurements.csv > Open all_measurements.csv with a text editor.
No summary dir here. Well shoot, what does the README say about a missing summary dir? Nothing.
Oh, its in ~/bencher/tmp/all_measurements.csv So what do the times say?
binarytrees,luajit,3,0,633,0.004,0,0,%,0.010 binarytrees,lua,2,0,525,0.000,0,-2,%,0.005 binarytrees,lua,3,0,633,0.000,0,-2,%,0.007 binarytrees,luajit,2,0,525,0.000,0,0,%,0.003
Lets compare that with the summary data:
binary-trees,Lua,2,12,446,0.796,4516,0,0% 0% 1% 100%,0.801
So uhh, I have to configure the parameters for every benchmark. Why don't you share your configuration? Oh, I see, there are various paths defined there appropriate for your environment.
Wait what? Why don't you separate the test configuration from the environment configuration?
First conclusion:
The bencher needs more work to make it easier to fork:
* improve readme by actually mentioning which ini file users should look at, telling them about the tmp dir, explaining the value syntax for the commandlines section etc. (important)
* invert entries in the [alias] section, because the way its set up now it makes no sense. (not that important)
* separate test and environment configuration in different files and share the test configuration files used on the website to help people reproduce the same results. (very important)
* fix the script to use the introspection bindings for gtop
Second conclusion:
The claim that its "easy" to set up has been nullified.
You seem to have run nbody.python without setting up the language environment for it.
I'm going to ignore all the rest of your editorializing and try to find something of substance.
Let's just note that you've jumped from #3.1 to #12.1 -- ignoring #3.2 which checks for problems and the subsequent sections that work through those problems and explain some of what you later find so puzzling.
>>Where is that INI file? The README doesn't say. Oh its my.linux.ini (its not mentioned anywhere in the document).<<
You seem to have found the ini file.
>>No comment on what %X or %A may mean<<
Actual comments on what %X or %A may mean:
; %X %T %B %I %A in commandlines are replaced like this:
;
; nbody.python-4.python %X = nbody.python-4.python
; nbody.python-4.python %T = nbody
; nbody.python-4.python %B = nbody.python-4
; nbody.python-4.python %I = 4
;
; %A = [testrange] value or 0 when the program takes input from stdin
>>What, only python? Oh, I need to copy the programs from the "bench" dir. Where in the readme does it say that? Nowhere.<<You don't seem to have read sections #3 through #11.
>>Okay, did that, re run the script, and it runs all nbody and regexdna benchmarks, and none of the others. Why?<<
You don't seem to have read sections #3 through #11.
>>Oh, it uses an old way of importing GTop<<
That actually is worth updating the readme about!
>>of course, I had to remove everything in tmp/* before re-running the test, otherwise it thinks there is "nothing to be done".<<
No you didn't. You don't seem to have read sections #3 through #11.
>>No summary dir here.<<
That actually was a bug! Empty directories weren't included in the snapshot zip.
>>improve readme by...<<
You didn't seem to read sections #3 through #11 (very important)
>>What, only python? Oh, I need to copy the programs from the "bench" dir. Where in the readme does it say that? Nowhere.<<
> You don't seem to have read sections #3 through #11.
If you grep the file, there is no mention of the bench dir anywhere in sections 3-11. Please do tell where you found it. The readme does say how to add new programs, but it doesn't say where the original programs of the shootout are in the distribution.
>> of course, I had to remove everything in tmp/* before re-running the test, otherwise it thinks there is "nothing to be done".<<
> No you didn't. You don't seem to have read sections #3 through #11.
No, you didn't read what I was doing. I had to remove everything in tmp/* because I was trying to enable gtop by editing the source code of the program. The old results were made without gtop and only contained cpu and elapsed time.
Finally the "actual comments" on what variables are available for the commandline strings aren't written anywhere. Only "%A" is explained in 9.3 and "%I" isn't even mentioned.
So it looks like all my suggestions remain valid:
From the first suggetion, removing the "tmp" dir assuming that the summary dir bug is fixed in the future:
1) improve readme by mentioning the location of my.linux.ini and my.win32.ini and adding the complete syntax for the commandlines section etc. (important)
2) invert entries in the [alias] section, because the way its set up now it makes no sense. (not important)
3) separate test and environment configuration in different files and share the test configuration files used on the website to help people reproduce the same results. (very important)
4) fix the script to use the introspection bindings for gtop
Note that you failed to comment on (3) which will by far improve the bencher the most. Infact, that is exactly where I stopped trying to reproduce your results - I stopped at the point where I had to extract all the values for the testrange from your CSV files, as the ones used on the website aren't distributed anywhere.
But of course, you're free to continue ignoring useful comments from other people. Which brings me to the original point, we're in dire need of a new benchmarks game.
>>3.1) unzip in ~ directory [ unzip in c:\ ] Requiring a path? Very poor.<<
Unzip somewhere else and see that it works just fine.
>>Where is that INI file? The README doesn't say. Oh its my.linux.ini (its not mentioned anywhere in the document).<<
#4.2
>>Oh, it uses an old way of importing GTop, the new way is to use the introspected bindings from gi.repository import GTop lets patch uselinux.py<<
Let's install the required python-gtop bindings
http://packages.ubuntu.com/precise/python-gtop
dpkg -i python-gtop_2.32.0+dfsg-1_amd64.debI think not to do so is unhelpful, actually -- if you don't realize they're are JITs for Python and Lua that aren't being included in the benchmarks, you will come away with a completely wrong impression about the possible performance of those languages.
edit: what spion said in their comment
For a couple of years I've wanted to "cull the herd" but
my curiosity (and interest in promoting experimental
language implementations) stopped me doing so.
The most that Alex Gaynor's nonsense did was prompt me
once more to consider whether the time was ripe.
Apr 2011
http://www.reddit.com/r/programming/comments/glvgk/lua_jit_p..."Because I want to do fewer chores not more!"
>>a completely wrong impression<<
"These are not the only compilers and interpreters.
These are not the only programs that could be written.
These are not the only tasks that could be solved.
These are just 10 tiny examples."And let's say this site becomes really popular. And people start posting articles like, "wow, dilap is like 10x prettier than igouy in ever single way!"
And then igouy's friends go, "whoaaaa, hold on a minute, those are terrible photo's of ioguy! he can really look much better than that!"
And then I'm like, "Hey, I ain't got time for this -- I told you already these are not the only photos in the world. Go take your own photos if you want a different comparison!"
That's what you're saying.
tl;dr
Measurement is highly specific -- the time taken for
this benchmark task, by this program, with this
programming language implementation, with these
options, on this computer, with these workloads.
http://benchmarksgame.alioth.debian.org/But don't send photos of your cousins, and your buddies cousins, and...
[1] http://golang.org/doc/faq#Implementation
[2] http://golang.org/cmd/go/#hdr-Compile_and_run_Go_program
[3] http://benchmarksgame.alioth.debian.org/u64/benchmark.php?te...