4 ms·
I'm so tired of benchmarks that play with ints and floats which show how fast Java is. Most business app work is string manipulation. If you think Ruby is slo
by Roboprog 15y ago
I'm so tired of benchmarks that play with ints and floats which show how fast Java is.
Most business app work is string manipulation. If you think Ruby is slow, look at the timings for "sequential" operation in the table on this page (yes, it's my site):
http://roboprogs.com/devel/2009.12.html http://roboprogs.com/devel/2009.12.html
If you think that I have badly blundered in my methodology, get the benchmark code, fiddle with it, and run it on your own hardware:
https://github.com/roboprog/mp_bench https://github.com/roboprog/mp_bench
FYI: I'm not trying to say that "Ruby is the most awesomest language, like ever, d00dz!!!". I like different tools for different jobs. I'm just tired of seeing people judge implementation speeds based on bit twiddling benchmarks, rather than stuff that at least churns through a large number of strings, if not other object types, and does some I/O.
- jbooth 15y agoYou're comparing the library-supplied date formatter for each language, not the language's speed at processing Strings. And the Java threading code is mostly benchmarking the speed of thread creation - in a real-world implementation you'd be using a thread pool with fewer lines of code.
- Roboprog 15y agoAgreed about the thread usage: the code I put together for threads in various languages is as naive as possible. Having a thread pool in proportion to the number of CPUs and pulling tasks from a queue (a la "Nginex") would be much more efficient. Interesting comment about the date formatter. I might put in something some time to compare the relative time spent in formatting vs the other concatenation. I suppose I'd be grateful if somebody made a fork with versions showing the split of time between those steps.
- qw 15y agoI noticed some differences in the code that I think are not equivalent Perl: print $local_process_var, " ", &gen_pg_template(), "\n" Python: print local_process_var, " ", gen_pg_template() Java: System.out.println( timestamp + " " + genPgTemplate() ); I'm not sure, but I think the Perl/Python code sends the strings as arguments to print that will just output them directly. In Java you will concatenate 3 strings before sending it to "print". This adds some extra CPU usage that the other versions don't have
- Roboprog 15y agoThanks for the observation. Not sure when I will get to revisiting this, but that seems like an easy inconsistency to clean up, and I probably should.
- Roboprog 15y agoOne item of possible note: It wasn't possible to have list driven output syntax in Java before 1.5. I'm not sure if they added an output method with elipses in it then, or not. Even if so, I'm not sure it would be faster. Still, I could modify the scripting output lines to bring them down to Java's level :-)