4 ms·
You mean, like this? http://shootout.alioth.debian.org/u32q/ http://shootout.alioth.debian.org/u32q/
by profquail 17y ago
You mean, like this?
http://shootout.alioth.debian.org/u32q/ http://shootout.alioth.debian.org/u32q/
- pg 17y agoI wish someone would create some benchmarks that were good for comparing code size. That would be a bit harder, because the problems would have to be bigger, and thus more likely to be ambiguous, but it would be a useful thing to have.
- blasdel 17y agoGzip-ed bytes of code is pretty great, and relatively fair to languages with verbose (but isomorphic) syntaxes. It's aiming to count the information content. A benchmark counting the unshared working set would be pretty decent, but quite unkind to news.arc -- counting all of Arc and most of MzScheme as part of your program. MRI Ruby programs would be totally fucked, since the mark-happy GC keeps any library code from being shared between fork()ed processes.
- ivankirigin 17y agoI think those comparisons would be meaningless. For example, looping over a matrix in matlab is both clunky and extremely inefficient. You can just do matrix operations that are extremely tight. You might use that to say it is better than C. But it is C. They've just make language constructs that make is easy to do matrix operations. You could do the exact same thing with a library in C. So comparing languages might run into the issue of comparing available libraries. I don't think new languages want to compete on availability of libraries.
- scott_s 17y agoBy your rationale, Perl and Python are C. Since Matlab has language constructs for doing matrix operations, it is better for manipulating matrices than C. That Matlab compiles down to C, or calls into C libraries, is an implementation detail.
- ivankirigin 17y agoYou can't get around the interpreted vs compiles difference (among others) that differentiate Python and C. The discussion is one of code size though, not the other differences. You can make compact and readable C that looks like other language constructs by writing libraries, to a limit. My point, if I didn't complete it, is one I've mentioned a few times. Libraries matter more than things like LOC count. And it is a really big difference. I challenge anyone to write an Arc levenberg marquardt minimization in less than 100 LOC. In Matlab (and other languages with good sets of libraries) it is literally just a parameterized function call. Maybe I'm just too pragmatic for discussions like this.
- jacquesm 17y agoOk, so let me try to spell this out to see if I understand what you mean: You are basically saying that whatever is primitive to the languages is irrelevant because the language that has the best libraries will win such a contest hands down because what needs to be re-implemented in one language is a primitive in the other. That's true as far as I can see, but only for 'domain specific' problems. By running a benchmark that contains samples from many domains it should be possible to average out those factors. Another way to deal with it would be to limit the code to code written in primitives. Still matlab would handily outperform any other language not endowed with primitives for matrix manipulation, but that's exactly the whole point of such a test. To figure out given a problem for a certain domain what would be the most expressive platform to solve the problem in.
- ivankirigin 17y agoAcross many domains, the effect of libraries is exaggerated. Perhaps minimization isn't enough. Let's add image processing, talking to hardware over a serial port, and parsing an xhtml file. Libraries win: image.convolve( filter ) hardware.write( c_struct ) beautifulsoup( xhtml )