seth_not@home: RegExp-geschwindigkeit

Beitrag lesen

gudn tach!

Wieso dann nicht primitiv über substring()? Das ist doch 100mal schneller als die Verwendung regulärer Ausdrücke.

ich weiss nicht, wie's in java ist, aber in perl ist das afais nicht so.

beispiel:

  
#!/usr/bin/perl  
use strict;  
use Benchmark qw(:all) ;  
my $s = '1234=Hallo Welt';  
my $tmp;  
my %h;  
my $results = timethese(10_000_000, {  
  'regexp_split' => sub{%h=split /=/, $s;},  
  'regexp_br'    => sub{$s=~/^([0-9]+)=(.+)\z/; %h=($1=>$2);},  
  'boring'       => sub{$tmp=index($s, '='); %h=(substr($s, 0, $tmp)=>substr($s, $tmp+1));},  
 },'none'  
);  
cmpthese($results);

ergebnis:

Rate    regexp_br       boring regexp_split
  regexp_br    390168/s           --         -16%         -31%
  boring       464253/s          19%           --         -18%
  regexp_split 569152/s          46%          23%           --

hier ist die split-methode, die schnellste, die mit dem wenigsten code und imho auch die fuer den menschen am besten lesbare.

prost
seth