Nachdem ich hier ca. 800.000 eMails innerhalb kürzester Zeit verschicken muss zählt jede Sekunde. Mein Programm ist ein kleiner Daemon in Perl. Ich habe es so geschrieben, dass es parallel mehrmals laufen kann (auch auf verschiedenen Systemen). Trotzdem aber kommt mir das Skript immer noch zu langsam vor. Daher habe ich mal wieder mit Profiling beschäftigt. Den Perl Profiler habe ich mit
perl -d:DProf dispatcher.pl
Anschließend liegt das Ergebnis im Verzeichnis als tmon.out. Das wiederum bekommt man ganz einfach über das Programm dprofpp ausgewertet. Raus kommt im dem aktuellen Beispiel sowas wie:
[root@mail1 dispatcher]# dprofpp Total Elapsed Time = 44.00120 Seconds User+System Time = 1.721205 Seconds Exclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 22.3 0.384 0.408 5824 0.0001 0.0001 Net::Cmd::datasend 12.7 0.219 0.219 2941 0.0001 0.0001 Net::Cmd::getline 11.3 0.195 0.227 2189 0.0001 0.0001 Net::Cmd::command 8.95 0.154 0.231 730 0.0002 0.0003 Sys::Syslog::syslog 6.80 0.117 0.117 963 0.0001 0.0001 DBI::st::fetch 5.64 0.097 1.360 728 0.0001 0.0019 main::send_email 5.23 0.090 0.232 728 0.0001 0.0003 Net::Cmd::dataend 3.60 0.062 0.062 10957 0.0000 0.0000 Net::Cmd::debug 2.85 0.049 0.049 249 0.0002 0.0002 DBI::st::execute 2.44 0.042 0.156 728 0.0001 0.0002 Net::SMTP::recipient 2.32 0.040 0.153 963 0.0000 0.0002 DBI::st::fetchrow_hashref 2.21 0.038 0.034 240 0.0002 0.0001 main::timetable 1.74 0.030 0.039 8 0.0037 0.0049 Net::SMTP::BEGIN 1.68 0.029 0.127 8 0.0037 0.0158 main::BEGIN 1.68 0.029 0.288 2920 0.0000 0.0001 Net::Cmd::response
D.h. also, dass das Programm am meisten Zeit mit der Kommunikation mit dem SMTP Server verbraucht. Mal sehen ob ich da was optimieren kann.
Pingback: Zeit ist Geld oder Profiling Perl - Teil 2 | Gerds Blog
Hallo,
Devel::DProf ist nicht unbedingt zu empfehlen. In dem Modul gibt es ein paar Bugs und die Ausgaben sind nicht immer 100%ig verlässlich. Stattdessen würde ich den – im Kommentar genannten – Profiler Devel::NYTProf empfehlen. Das ist verlässlich und wird aktiv weiterentwickelt.
Viele Grüße,
Renée Bäcker
Gut zu wissen. Danke
Gerd