5 ms·
I respect that Rakudo is still under development, but it's no myth that, as it is today, Perl 6 is pretty slow. I did some benchmarking [0] comparing the time f
by nxrabl 7y ago
I respect that Rakudo is still under development, but it's no myth that, as it is today, Perl 6 is pretty slow. I did some benchmarking [0] comparing the time for various interpreted languages to start up, print "Hello world", and quit (or to start up, read from /dev/null, and quit), and Rakudo was about twice as slow as Node and Ruby, and 100x slower than Perl 5. (I think this is a decent test of performance if what you mostly run are short scripts but I'm more than open to improvements.)
[0] https://github.com/wilt00/startuptime/blob/master/analysis.ipynb https://github.com/wilt00/startuptime/blob/master/analysis.i...
- Ultimatt 7y ago$ time perl -E 'say "hello world"' hello world real 0m0.016s user 0m0.005s sys 0m0.007s $ time perl6 -e 'say "hello world"' hello world real 0m0.187s user 0m0.226s sys 0m0.032s That is not 100x slower, 10x sure. But once its running its faster than Perl 5 in plenty of situations especially for things like heavy OO use or compact numeric work in tight loops. Anyone who argues Perl 6 is fast is definitely being disingenuous but the counter is almost certainly more annoying to come across simply because "startup time" is only important if you expect your program to execute in less than a tenth of a second. So tight loops in a shell script for something simple, stick to Perl 5. Large web app that will be running for the next 5 years who cares about 10x slower startup time? Hardly a benchmark thats useful.
- futureastronaut 7y agoAgreed, "Perl 6 is slow" is a ridiculous takeaway from a benchmark of process start times.
- lizmat 7y agoEspecially if you would compare a "Modern Perl 5" startup sequence, which would involve using the `Moose` module (as Perl 6 has that built in). Then startup times are basically the same.
- microtherion 7y agoSo the argument against Perl 6 being slow is "if you use it properly, Perl 5 can be just as slow" ?
- futureastronaut 7y agoIt's more like saying "the conventional P5 runtime is about as heavy as the distributed P6 one", seems fair to me.
- keypusher 7y agoStartup time is only relevant in specific cases, and doesn’t really reflect what most people think of as the language speed. It’s most important in serverless apps or similar cases where a small script is going to be called very frequently and the results are time critical, in most other cases it is very quickly made irrelevant by the duration of the task itself. For example, Java and C# start up slower than many interpreted languages, but can be significantly faster once they get going. I suggest a more accurate benchmark to be something that include some file io, string processing, arithmetic, and some basic data structure operations. I have an idea I might code up later.
- nneonneo 7y agoOne of the key use-cases for Perl 5 in scripts was as a replacement for sed/grep/awk. In a makefile or batch processing script, these can get called hundreds to thousands of times per second effortlessly. With a startup time of .2s, you could only start a Perl 6 interpreter 5 times per second, which is a major slowdown and eliminates it from this class of use-cases.
- ccashell 7y agoIf you're doing some sort of processing where you're calling an external script hundreds or thousands of times, you're probably doing it wrong. You should be writing it to get called once and process your input as it comes in. That goes regardless of language. If you're calling an external "thing" thousands of times to process something, you're going to have issues with performance because the approach to processing the data is bad. You can get away with it to a point by using only the most simple and basic of tools (cat/cut/tr/echo/grep/etc), but one of the common reasons that shell scripts get rewritten in Perl/Python/etc is to process data without making hundreds of thousands of calls to spawn external processes.