And for those interested, here's a comparision which clearly shows the difference.
7.4.13: 1: 253364 ( 253364) 2: 248881 ( 124440) 4: 248432 ( 62108) 8: 222656 ( 27832) 16: 219336 ( 13708) 32: 429621 ( 13425) 64: 432151 ( 6752) 128: 433364 ( 3385) 256: 434760 ( 1698) 512: 435864 ( 851) 1024: 434589 ( 424) 2048: 433014 ( 211) 4096: 425080 ( 103) 8192: 414067 ( 50) 16384: 373576 ( 22) 32768: 390452 ( 11) 65536: 382807 ( 5) 131072: 386023 ( 2) 262144: 391858 ( 1) 524288: 380863 ( 0) 1048576: 381443 ( 0) 2097152: 336393 ( 0) 4194304: 245102 ( 0) 8388608: 56765 ( 0)
7.2.364: 1: 244592 ( 244592) 2: 244008 ( 122004) 4: 244752 ( 61188) 8: 222359 ( 27794) 16: 217999 ( 13624) 32: 207494 ( 6484) 64: 176696 ( 2760) 128: 139072 ( 1086) 256: 108573 ( 424) 512: 71375 ( 139) 1024: 43590 ( 42) 2048: 23732 ( 11) 4096: 12354 ( 3) 8192: 4375 ( 0) 16384: 430 ( 0) 32768: 140 ( 0) 65536: 66 ( 0) 131072: 32 ( 0) 262144: 16 ( 0) 524288: 8 ( 0) 1048576: 4 ( 0) 2097152: 2 ( 0) 4194304: 1 ( 0) 8388608: 1 ( 0)
/ David Hedbor
Previous text:
2003-03-21 08:26: Subject: Re: reasons why pike is better than python?
It depends. If it is combined with elemnts removal, epsecially like:
a = a[1..]; a += ({ some_value });
This is quite slow, especially for big arrays :)
No it's not, proof below: (I optimized the range operator in Pike 7.3.11 or so)
---------------------arraybench.pike------------------------ #!/usr/bin/env pike
int main() { for(array(int) a=({19});sizeof(a) < 10000000; a+=a) { int iter; int t=time(); for(float x=time(t) + 1.0;time(t) < x;iter++) { a+=({17}); a=a[1..]; } write("%8d: %12d (%12d)\n",sizeof(a),iter,iter/sizeof(a)); } }
Results: 1: 409885 ( 409885) 2: 400459 ( 200229) 4: 380187 ( 95046) 8: 377355 ( 47169) 16: 335558 ( 20972) 32: 707770 ( 22117) 64: 707568 ( 11055) 128: 724203 ( 5657) 256: 724851 ( 2831) 512: 722408 ( 1410) 1024: 731361 ( 714) 2048: 722853 ( 352) 4096: 724260 ( 176) 8192: 718247 ( 87) 16384: 703705 ( 42) 32768: 685720 ( 20) 65536: 685558 ( 10) 131072: 681559 ( 5) 262144: 684715 ( 2) 524288: 677111 ( 1) 1048576: 663094 ( 0) 2097152: 624890 ( 0) 4194304: 600015 ( 0) 8388608: 461745 ( 0)
/ Fredrik (Naranek) Hubinette (Real Build Master)