<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Perl Performance Probleme</title>
    <link>http://forum.geizhals.at/feed.jsp?id=575866</link>
    <description>Geizhals-Forum</description>
    <item>
      <title>Re(7): Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4851023.html#4851023</link>
      <description>fein.&lt;br&gt;&lt;br&gt;wenn du noch weiter optimieren willst, kannst du den hash auch durch ein array ersetzen, nachdem du nur numerische werte als key hast. die "luecken" sollten bei ca. 7000 werten nicht so tragisch sein. ein array lookup ist sehr viel schneller als ein hash lookup.&lt;br/&gt;</description>
      <pubDate>Thu, 12 Jun 2008 12:48:52 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4851023.html#4851023</guid>
      <dc:creator>japh</dc:creator>
      <dc:date>2008-06-12T12:48:52Z</dc:date>
    </item>
    <item>
      <title>Re(6): Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4850783.html#4850783</link>
      <description>Nein, das hat das Ding gar nicht geschafft &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt; &lt;br&gt;&lt;br&gt;War im Zuge eines Performancetests, 7 Mio mal den Pfad einer Datei zu berechnen. &lt;br&gt;&lt;br&gt;Was soll ich sagen, hat ca 3h gedauert. Heute habe ichs umgestellt wie von dir beschrieben, und das ganze hat sich auf gerade einmal eine Minute und 28 Sekunden verkürzt. Also eine Menge &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt; &lt;br&gt;&lt;br&gt;Ist jetzt sogar schneller als unser altes System. &lt;br&gt;&lt;br&gt;Vielen Dank für die Tipps!!&lt;br/&gt;</description>
      <pubDate>Thu, 12 Jun 2008 11:14:37 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4850783.html#4850783</guid>
      <dc:creator>Norret</dc:creator>
      <dc:date>2008-06-12T11:14:37Z</dc:date>
    </item>
    <item>
      <title>Re(5): Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4849709.html#4849709</link>
      <description>&lt;blockquote&gt;&lt;em&gt; und man darf nicht vergessen dass diese Operation ca 7 Millionen Mal durchgeführt wird. &lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;hoppala ... doch hoffentlich nicht pro sekunde? &lt;img src="zwinker.gif" width="16" height="19" align="absmiddle" alt=";-)"/&gt;&lt;br&gt;&lt;br&gt;in dem fall bringt es was, moeglichst alles hinzuoptimieren. also erstmal die prototypen weglassen - $$$ beim aufruf, ausser du brauchst sie wirklich,&amp;nbsp;&amp;nbsp;bringt ein bisserl was.&lt;br&gt;&lt;br&gt;dann kannst du auch das kopieren aus @_ komplett weglassen, bringt wieder ein bisschen was (wenn auch minimal).&lt;br&gt;&lt;br&gt;also:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
sub getPathByHash { # getPathByHash($hashref,$id,$countdone);&#xD;
  my @shares = @{$_[0]-&amp;gt;{$_[1]}}; #"id" aus deinem code sollte wohl $id sein &#xD;
  return $shares[$_[2] % @shares]."\\".$_[1];&#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;eine optimierung bleibt dir dann noch, ein "globales" %hash, dann sparst du auch noch was beim passing by reference:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
my %hash = ...; # global %hash&#xD;
...&#xD;
&#xD;
sub getPathByHash { # getByHash($id,$countdone);&#xD;
  my @shares = @{$hash{$_[0]}}; # global %hash&#xD;
  return $shares[$_[1] % @shares]."\\".$_[0];&#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;die kopie @shares wegzuoptimieren (beim passing by reference von %hash) ist wahrscheinlich kontraproduktiv, weil doppeltes derefen teurer sein duerfte, sonst koenntest du schoen "line noise" produzieren:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
sub getPathByHash { # getPathByHash($hashref,$id,$countdone);&#xD;
  $_[0]-&amp;gt;{$_[1]}-&amp;gt;[$_[2] % @{$_[0]-&amp;gt;{$_[1]}}]."\\".$_[1];&#xD;
}&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 20:59:35 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4849709.html#4849709</guid>
      <dc:creator>japh</dc:creator>
      <dc:date>2008-06-11T20:59:35Z</dc:date>
    </item>
    <item>
      <title>Re(4): Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4848962.html#4848962</link>
      <description>Ja, ist er. &lt;br&gt;ca. 700 Keys mit jeweils einem Array von ca. 8 Skalaren als Value.&lt;br&gt;&lt;br&gt;EDIT:&lt;br&gt;und man darf nicht vergessen dass diese Operation ca 7 Millionen Mal durchgeführt wird. &lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 16:48:55 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4848962.html#4848962</guid>
      <dc:creator>Norret</dc:creator>
      <dc:date>2008-06-11T16:48:55Z</dc:date>
    </item>
    <item>
      <title>Re(4): Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4848818.html#4848818</link>
      <description>Ja, ist er. &lt;br&gt;ca. 700 Keys mit jeweils einem Array von ca. 8 Skalaren als Value.&lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 16:48:55 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4848818.html#4848818</guid>
      <dc:creator>Norret</dc:creator>
      <dc:date>2008-06-11T16:48:55Z</dc:date>
    </item>
    <item>
      <title>Re(3): Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4848601.html#4848601</link>
      <description>wirkt sich ziemlich sicher positiv aus. bei dir wird ja der ganze hash lokal kopiert. obwohl mich etwas wundert, dass das so merkbar teuer ist - der hash ist wohl recht riesig.&lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 15:28:32 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4848601.html#4848601</guid>
      <dc:creator>japh</dc:creator>
      <dc:date>2008-06-11T15:28:32Z</dc:date>
    </item>
    <item>
      <title>Re(2): Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4848580.html#4848580</link>
      <description>super danke, werde es morgen @work gleich mal ausprobieren. &lt;br&gt;&lt;br&gt;Weißt du ob sich das auf die Performance auswirkt? Oder wird da unterm Strich dasselbe rauskommen?&lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 15:20:51 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4848580.html#4848580</guid>
      <dc:creator>Norret</dc:creator>
      <dc:date>2008-06-11T15:20:51Z</dc:date>
    </item>
    <item>
      <title>Re: Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4848276.html#4848276</link>
      <description>&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
my @shares = @{$hashref-&amp;gt;{id}};&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 12:59:18 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4848276.html#4848276</guid>
      <dc:creator>japh</dc:creator>
      <dc:date>2008-06-11T12:59:18Z</dc:date>
    </item>
    <item>
      <title>Re: Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4848485.html#4848485</link>
      <description>&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
my @shares = @{$hashref-&amp;gt;{id}};&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;bzw. gleich auf das arrayelement:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
$hashref-&amp;gt;{id}-&amp;gt;[$countdone % $nr_shares];&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 12:59:18 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4848485.html#4848485</guid>
      <dc:creator>japh</dc:creator>
      <dc:date>2008-06-11T12:59:18Z</dc:date>
    </item>
    <item>
      <title>Re: Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4848274.html#4848274</link>
      <description>my @shares = @{$hashref-&lt;img src="angry.gif" width="16" height="19" align="absmiddle" alt="&amp;gt;-("/&gt;id}};&lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 12:59:18 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4848274.html#4848274</guid>
      <dc:creator>japh</dc:creator>
      <dc:date>2008-06-11T12:59:18Z</dc:date>
    </item>
    <item>
      <title>Perl Performance Probleme</title>
      <link>http://forum.geizhals.at/t575866,4848048.html#4848048</link>
      <description>Hi!&lt;br&gt;&lt;br&gt;Wir stellen in der Arbeit unsere Fileserver um und ich habe dafür einige Scripts entwickelt. Leider hat sich eines davon als ziemliches Bottleneck herausgestellt. &lt;br&gt;&lt;br&gt;Ich habe eine Funktion getPathByHash der ich eine Referenz auf einen Hash, eine ID (Nummer der Datei) und eine Zählvariable (um die Zugriffe auf die Shares gleichmäßig zu verteilen). &lt;br&gt;&lt;br&gt;Der Hash enthält als Key Werte von 0 bis ca 7000 und als Value jeweils eine Referenz auf ein Array, welches jeweils Pfade auf Netzwerkfreigaben enthält, auf welcher sich die Datei befindet. Das heißt, Datei Nummer 1234 liegt in allen Shares, welche als Value für den Key 1234 im Hash eingetragen ist.&lt;br&gt;&lt;br&gt;Mein Skript retuniert nun einen Pfad auf einen Netzwerkshare der die Datei enthält. Ich gehe dabei folgendermaßen vor: &lt;br&gt;&lt;br&gt;sub getPathByHash($$$){&lt;br&gt; my ($hashref,$id,$countdone) = @_;&lt;br&gt; my %hash = %{$hashref};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;-- SEEEEEEEHR langsam&lt;br&gt; &lt;br&gt; my @shares = @{$hash{id}};&lt;br&gt; my $nr_shares = @shares;&lt;br&gt; return $shares[$countdone % $nr_shares]."\\".$id;&lt;br&gt;}&lt;br&gt;&lt;br&gt;Der markierte Call in dem die Hash Referenz in einen Hash umgewandelt wird ist der, der das Bottleneck verursacht. &lt;br&gt;&lt;br&gt;Wie kann ich diesen Call vermeiden, und mir von der Referenz auf den Hash gleich das Array herausholen, bzw. wie kann man in einem Schritt, ohne die Referenzen umzuwandeln, den Pfad retunieren? &lt;br&gt;&lt;br&gt;Besten Dank!&lt;br/&gt;</description>
      <pubDate>Wed, 11 Jun 2008 11:39:52 GMT</pubDate>
      <guid>http://forum.geizhals.at/t575866,4848048.html#4848048</guid>
      <dc:creator>Norret</dc:creator>
      <dc:date>2008-06-11T11:39:52Z</dc:date>
    </item>
  </channel>
</rss>
