[Israel.pm] count chars
Yuval Kogman
nothingmuch at woobling.org
Mon Sep 3 15:40:33 EEST 2007
On Mon, Sep 03, 2007 at 05:05:12 -0700, Ephraim Dan wrote:
> Interesting that tr/// is so much faster than index() - I wonder why that is?
Because perl's speed is generally directly proportional to the
number of opcodes involved in the code more than anything else.
There are two looping structures in the code:
c_tr will loop in C iwthin the tr/// operator
c_index will loop in Perl using opcodes
To execute the opcode tree each is walking a graph of pointers,
finding c functions by pointers, and executing them, so cache
locality, fiddling the stack, etc account for a lot of overhead that
the C code in the tr operator's implementation doesn't have to worry
about.
An interesting talk on the subject:
http://www.ccl4.org/~nick/P/Fast_Enough/
--
Yuval Kogman <nothingmuch at woobling.org>
http://nothingmuch.woobling.org 0xEBD27418
More information about the Perl
mailing list