in reply to Re: programming languages and immutable data types
in thread programming languages and immutable data types
There are other ways of mutating a string than just appending to the end. For example:
$n=1e3; cmpthese -1,{ a=>q[ my$s = chr(0)x$n; for my $i ( 0..length($s)-1){ substr $s, $i, 1, chr(1); } ], b=>q[ my$s = chr(0)x$n; for my $i ( 0..length($s)-1){ $s = substr($s,0,$i-1) . chr(1) . substr $s,$i+1; } ] };; Rate b a b 811/s -- -85% a 5525/s 581% -- $n=1e4; cmpthese -1,{ a=>q[ my$s = chr(0)x$n; for my $i ( 0..length($s)-1){ substr $s, $i, 1, chr(1); } ], b=>q[ my$s = chr(0)x$n; for my $i ( 0..length($s)-1){ $s = substr($s,0,$i-1) . chr(1) . substr $s,$i+1; } ] };; Rate b a b 13.0/s -- -98% a 556/s 4173% -- $n=1e5; cmpthese -1,{ a=>q[ my$s = chr(0)x$n; for my $i ( 0..length($s)-1){ substr $s, $i, 1, chr(1); } ], b=>q[ my$s = chr(0)x$n; for my $i ( 0..length($s)-1){ $s = substr($s,0,$i-1) . chr(1) . substr $s,$i+1; } ] };; (warning: too few iterations for a reliable count) s/iter b a b 12.5 -- -100% a 1.77e-002 70277% --
|
|---|