<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hallo!<div><br></div><div>Ich habe hier </div><div><br></div><div><a href="https://github.com/marians/audiocalc/">https://github.com/marians/audiocalc/</a></div><div><br></div><div>bzw. hier</div><div><br></div><div><a href="https://github.com/marians/audiocalc/blob/master/audiocalc/__init__.py">https://github.com/marians/audiocalc/blob/master/audiocalc/__init__.py</a></div><div><br></div><div>ein paar Funktionen für die Berechnung von Schallpegeln, Luftdämpfung etc. aus verschiedenen Quellen "zusammengestückelt". Den Code nutze ich auch in einem Projekt, in dem es um Lärm-Modellierung geht. Speziell die Funktionen "distant_total_damped_rated_level" wird häufig aufgerufen und ist für einen großen Teil der Laufzeit meiner Modellberechnung verantwortlich.</div><div><br></div><div>Gibt es hier einen Experten, der glaubt, die Laufzeit der Funktion spürbar verringern zu können? "Spürbar" sollte schon mind. 20% Beschleunigung bedeuten (wohl gemerkt auf einer CPU).</div><div><br></div><div>Ein Benchmark-Script liegt im Repository und kann mit "python -m audiocalc.benchmark_damping" ausgeführt werden. Mit -p gibt es diese Profiling-Ausgabe (gekürzt):</div><div><br></div><div><div>8175699 function calls in 4.993 seconds</div><div>Ordered by: standard name</div><div><br></div><div>   ncalls  tottime  percall  cumtime  percall filename:lineno(function)</div><div>   568480    2.759    0.000    3.636    0.000 __init__.py:19(damping)</div><div>   568480    0.902    0.000    1.092    0.000 __init__.py:73(distant_level)</div><div>    71060    0.040    0.000    4.936    0.000 __init__.py:88(distant_total_damped_rated_level)</div><div>  1705440    0.211    0.000    0.211    0.000 {math.exp}</div><div>  1208020    0.207    0.000    0.207    0.000 {math.log}</div><div>   568480    0.068    0.000    0.068    0.000 {math.sqrt}</div><div>    71060    0.018    0.000    0.018    0.000 {method 'keys' of 'dict' objects}</div><div>  3410880    0.731    0.000    0.731    0.000 {pow}</div><div>     3796    0.004    0.000    0.004    0.000 {range}</div></div><div><br></div><div>Wie man sieht, geht ein großer Teil der Zeit auf die Rechnung  von pow(), math.log(), auch andere Grundrechenoperationen mit floats, die hier nicht aufgeführt werden, dürften eine größere Rolle spielen.</div><br>Ich wäre durchaus gewillt, hierfür gegen Rechnung einen Obulus zu entrichten (1 bis 3 Stundensätze?). Wenn Du interessiert bist, melde Dich bitte vorher bei mir (Telefon, Mail oder Skype), damit wir das im Detail abstimmen können. Meine Kontaktdaten stehen unten.<div><br></div><div>Ansonsten bin ich natürlich auch offen für Tipps und Ratschläge im Sinne einer User Group!</div><div><br></div><div>Laufen soll das ganze übrigens später unter Python 2.7, Ubuntu 12 LTS auf einer Amazon EC2 c1.medium Instanz, 64bit, der audiocalc-Code sollte aber idealerweise auch auf anderen Plattformen ausführbar bleiben.</div><div><br></div><div>Vielen Dank und Grüße</div><div><br></div><div>Marian</div><div><br><br><div apple-content-edited="true">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">-- <br>Phone +49 2205 91829260<br>Skype marian.steinbach<br><br></div></div></div></body></html>