Leser: 23
say $count++,'|',$ref->{isin},'|',$ref->{label},'|',$ref->{FundShareClassID} while $ref = $sth->fetchrow_hashref();
Quote<kopfwiedereinzieh>For now, this only enables the strict and warnings pragmas, as well as all of the features available in Perl 5.10.
2009-11-23T23:25:11 pqdamit er sich use strict, use warnings und use features spart?
use Modern::Perl;
use Modern::Perl;
2009-11-24T13:47:49 sid burnEiniges an Performance sollte es bringen wenn du anstatt "fetchrow_hashref" lieber "fetchrow_arrayref" nutzt. Das bauen eines Hashes ist nämlich mit viel aufwand verbunden. Zumindest wurde es mal im "DBI" Buch erwähnt das dies einiges Performance kostet.
Ob das nun vergleichbar ist mit PHP ist jetzt Diskusionswürdig.
Quotenatürlich nicht. wenn man ehrlich vergleichen will und in PHP den zugriff per string benutzt, wäre es ziemlich unfair, auf perl-seite ein array zu verwenden. egal, ob man in PHP die dinger nun hashes oder array nennt, es ist ja dasselbe prinzip.
Quotewenn du mal von der PHP-seite aus denkst, sollte das sicher einleuchten, dass das kein fairer benchmark mehr ist.
2009-11-24T14:32:06 sid burnBenchmarks sind selber nahezu sinnlos, vorallem solche Mikrobenchmarks wie diese hier.
QuoteHTC z.b. wäre nicht so schnell, wenn ich nicht mit Benchmarks die Stellen herausgefunden hätte, die Zeit kosten. Man sucht sich ggfs. mit einem Profiler die Schwachstellen
QuoteIndem man hier z.B. fetchrow_hashref durch fetchrow_arrayref ersetzt, sieht man dann ggfs., dass das schneller ist. Dann muss man sich die Frage stellen, ist das sinnvoll,
QuoteIn HTC gibt es z.B. jede Menge stellen, in denen ich zugunsten der Schnelligkeit auf die Lesbarkeit verzichtet habe, aber das ist ok, weil es interner Code ist, der so oft ausgeführt wird und im Vergleich dazu selten angefasst werden muss. Das muss man immer abwägen, und ein isolierter Benchmark gibt einem eine Idee davon, ob es überhaupt lohnt.
QuoteBenchmarks generell als sinnlos abzutun, halte ich für falsch. Man muss nur wissen, wie man sie benutzt.
2009-11-24T15:50:41 sid burnQuoteIn HTC gibt es z.B. jede Menge stellen, in denen ich zugunsten der Schnelligkeit auf die Lesbarkeit verzichtet habe, aber das ist ok, weil es interner Code ist, der so oft ausgeführt wird und im Vergleich dazu selten angefasst werden muss. Das muss man immer abwägen, und ein isolierter Benchmark gibt einem eine Idee davon, ob es überhaupt lohnt.
Ein Benchmark gibt dir gar keine Idee davon ob es was gebracht hat oder nicht. Wenn deine Optimierte stelle jetzt zwar 50% schneller ist von 5ms auf 2.5ms aber die Stelle nur alle jubell jahre einmal aufgerufen wurde und 0.0000001% der gesammten Laufzeit ausgemacht hat dann hat deine Optimierung absolut nix gebracht. Ausser Zeitverschwendung.
say $count++,'|',$ref->{isin},'|',$ref->{label},'|',$ref->{FundShareClassID} while $ref = $sth->fetchrow_hashref();
say $count++,'|',$ref[0],'|',$ref[1],'|',$ref[2] while @ref = $sth->fetchrow_array();
1
2
3
4
5
6
7
#!/bin/bash
START=$(date +%s%N)
mysql -uroot -ppasswd vspfonds -e 'SELECT isin, label, FundShareClassID FROM tx_danpfonds_funds;'
END=$(date +%s%N)
DIFF=$(( $END - $START ))
SECS=`echo "$DIFF/10000000000" | bc -l`
echo "It took $SECS seconds"
2009-11-24T14:23:56 paddyDas Auskommentieren von »binmode STDOUT, ':encoding(UTF-8)';« hat nüscht gebracht.
$count++ while $ref = $sth->fetchrow_hashref();