Thread Eingebene Dezimalzahl mit Komma umwandeln in Gleitkommazahl mit Punkt (15 answers)
Opened by Newbie2008 at 2008-12-06 14:50

pktm
 2008-12-06 20:42
#116894 #116894
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Also, ich habe jetzt mal eine Benchmark dazu laufen lassen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/Perl/bin/perl

use strict;
use warnings;
use Benchmark qw(:all) ;

my $count = 10000000;

cmpthese($count, {
'tr' => sub {
my $var = '5,10';
$var =~ tr/,/./;
},
's' => sub {
my $var = '5,10';
$var =~ s/(\d{1,3})(?=(?:\d{3}))/$1\,/g
},
});


Und da kam folgendes raus:
Quote
Rate s tr
s 683761/s -- -79%
tr 3248863/s 375% --


Für diesen Ausdruck scheint der tr-Operator besser geeignet zu sein, da er weniger Zeit verbraucht. Das deckt sich mit meiner Vermutung, steht in der Doku zu tr///, dass keine Variableninterpolation innerhalb des Ausdrucks stattfinden. Nicht zuletzt sind Perl-RegEx sehr mächtig. Man kann sogar ohne Probleme kontextsensitive Sprachen als "regulären Ausdruck" definieren. Diese Maschinerie muss irgendwann ja mal angeworfen werden, und das braucht Zeit.
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Eingebene Dezimalzahl mit Komma umwandeln in Gleitkommazahl mit Punkt