SlideShare ist ein Scribd-Unternehmen logo
1 von 50
 
Dem Performance-Killer auf der Spur
 
Die Jäger ,[object Object]
Devel::SmallProf
Devel::NYTProf
Spezielle Profiler
Profiling für den Perl-Programmierer
Arten des Profilens...
CPU Time Real Time Subroutine ? ? Statement ? ?
CPU Time ,[object Object]
Exklusive I/O, Datenbanken, etc.
Kaum beeinflusst von der Auslastung des Rechners
Real Time ,[object Object]
Inklusive I/O, Datenbanken, etc.
Stark beeinflusst durch Auslastung
Subroutine ,[object Object]
Inklusive aller Subroutinen und Code, die innerhalb der Subroutine aufgerufen werden
Ziemlich schnell, da nur an wenigen Punkten die Zeit genommen werden muss -> wenig I/O
Subroutine ,[object Object]
Liefert keine Anhaltspunkte, wo genau in der Subroutine die Zeit verloren geht
Kann keinen Code außerhalb von Subroutinen  messen
Statement ,[object Object]
Exklusive Zeit für aufgerufene Subroutinen (Ausnahme: Built-ins und xsub)
Sehr hohe Genauigkeit
Statement ,[object Object]
Manchmal etwas ungenau
Zu detailliert für große Subroutinen
Schwierig, eine Zeit für die Subroutine zu bekommen
Häufiges Problem: bei Aufruf einer Subroutine und dann „etwas anderes“ ausführen, wird alles der Subroutine zugerechnet Funktion() + mkdir('./verzeichnis');
Anwendungsbereiche profilen ,[object Object]
File I/O
Manche Jäger bleiben auf der Strecke ,[object Object]
Maintenance-Nightmare
Liefert häufig falsche Ergebnisse (je schneller die CPUs werden, desto schlechter werden die Ergebnisse) ,[object Object]
Devel::NYTProf to the rescue
…  leider erst ab Perl 5.8.1
Devel::NYTProf ,[object Object]
Gestartet von Adam Kaplan von „New York Times“
Ein paar Bugfixes für Devel::FastProf plus HTML-Auswertung an Devel::Cover angelehnt
Höhere Genauigkeit (beachtet Overhead des Profilers beim Schreiben der Daten)
Tests wesentlich verbessert
Devel::NYTProf ,[object Object]
Wertet Subroutinen „pro Aufruf“ aus
Auch für xsubs
Berechnet Exklusiv-Zeiten „on-the-fly“
Kann mit Dingen wie „goto &sub“ umgehen
Schreibt Datei erst am Ende
Sehr schnell
Devel::NYTProf ,[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
Oliver Zeigermann
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
NETWAYS
 

Was ist angesagt? (19)

Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
 
Ruboto - Ruby on Android
Ruboto - Ruby on AndroidRuboto - Ruby on Android
Ruboto - Ruby on Android
 
Architektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureArchitektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für Clojure
 
MongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerMongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen Hacker
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
 
Der WordPress Wolpertinger
Der WordPress WolpertingerDer WordPress Wolpertinger
Der WordPress Wolpertinger
 
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
 
Devs@Home - Einführung in Go
Devs@Home - Einführung in GoDevs@Home - Einführung in Go
Devs@Home - Einführung in Go
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
 

Andere mochten auch

Primera reflexion
Primera reflexionPrimera reflexion
Primera reflexion
garupa
 
Calkini campeche
Calkini campecheCalkini campeche
Calkini campeche
Alex Reyes
 
La descripción
La descripciónLa descripción
La descripción
jonaydiaz
 
La harina pan ya no es venezolana radio en vivo - yvke mundial
La harina pan ya no es venezolana    radio en vivo - yvke mundialLa harina pan ya no es venezolana    radio en vivo - yvke mundial
La harina pan ya no es venezolana radio en vivo - yvke mundial
abidibu
 
Ejercicio parejas
Ejercicio parejasEjercicio parejas
Ejercicio parejas
Tuvie
 
Fuck the NSA: Artikel im Cash-Flow-Magazin
Fuck the NSA: Artikel im Cash-Flow-MagazinFuck the NSA: Artikel im Cash-Flow-Magazin
Fuck the NSA: Artikel im Cash-Flow-Magazin
Jakob Steinschaden
 
Documentos electronicos itzel
Documentos electronicos itzelDocumentos electronicos itzel
Documentos electronicos itzel
strellaitzel
 
Finanzen 1981 der schatten krieger
Finanzen 1981 der schatten krieger Finanzen 1981 der schatten krieger
Finanzen 1981 der schatten krieger
Chemtrails Spoter
 
Propuesta de viaje de fin de curso 2011/2012
Propuesta de viaje de fin de curso 2011/2012Propuesta de viaje de fin de curso 2011/2012
Propuesta de viaje de fin de curso 2011/2012
PPABADIA
 

Andere mochten auch (20)

Social Signals vs. SEO
Social Signals vs. SEOSocial Signals vs. SEO
Social Signals vs. SEO
 
Procesos
ProcesosProcesos
Procesos
 
El líder cayetano carpio
El líder cayetano carpioEl líder cayetano carpio
El líder cayetano carpio
 
Comandos
ComandosComandos
Comandos
 
Terra 2015 72_test_export_4
Terra 2015 72_test_export_4Terra 2015 72_test_export_4
Terra 2015 72_test_export_4
 
Nticx1
Nticx1Nticx1
Nticx1
 
Primera reflexion
Primera reflexionPrimera reflexion
Primera reflexion
 
Pecha-Kucha-Präsentation zum Communication Camp bei der Young Talent Initiati...
Pecha-Kucha-Präsentation zum Communication Camp bei der Young Talent Initiati...Pecha-Kucha-Präsentation zum Communication Camp bei der Young Talent Initiati...
Pecha-Kucha-Präsentation zum Communication Camp bei der Young Talent Initiati...
 
Clase 1 educ secundaria europa y am latina
Clase 1 educ secundaria europa y am latinaClase 1 educ secundaria europa y am latina
Clase 1 educ secundaria europa y am latina
 
Calkini campeche
Calkini campecheCalkini campeche
Calkini campeche
 
La descripción
La descripciónLa descripción
La descripción
 
La harina pan ya no es venezolana radio en vivo - yvke mundial
La harina pan ya no es venezolana    radio en vivo - yvke mundialLa harina pan ya no es venezolana    radio en vivo - yvke mundial
La harina pan ya no es venezolana radio en vivo - yvke mundial
 
Gráficos xr y xs problema 9
Gráficos xr y xs problema 9Gráficos xr y xs problema 9
Gráficos xr y xs problema 9
 
Ejercicio parejas
Ejercicio parejasEjercicio parejas
Ejercicio parejas
 
5poligonos 130528145236-phpapp02
5poligonos 130528145236-phpapp025poligonos 130528145236-phpapp02
5poligonos 130528145236-phpapp02
 
Ejercicios de acentuación
Ejercicios de acentuaciónEjercicios de acentuación
Ejercicios de acentuación
 
Fuck the NSA: Artikel im Cash-Flow-Magazin
Fuck the NSA: Artikel im Cash-Flow-MagazinFuck the NSA: Artikel im Cash-Flow-Magazin
Fuck the NSA: Artikel im Cash-Flow-Magazin
 
Documentos electronicos itzel
Documentos electronicos itzelDocumentos electronicos itzel
Documentos electronicos itzel
 
Finanzen 1981 der schatten krieger
Finanzen 1981 der schatten krieger Finanzen 1981 der schatten krieger
Finanzen 1981 der schatten krieger
 
Propuesta de viaje de fin de curso 2011/2012
Propuesta de viaje de fin de curso 2011/2012Propuesta de viaje de fin de curso 2011/2012
Propuesta de viaje de fin de curso 2011/2012
 

Ähnlich wie Fr os con2010_devel_nytprof

HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
Mayflower GmbH
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101
gueste4be40
 

Ähnlich wie Fr os con2010_devel_nytprof (20)

Node.js Security
Node.js SecurityNode.js Security
Node.js Security
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
Windows Powershell
Windows PowershellWindows Powershell
Windows Powershell
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas GelfOSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Production-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 WochenProduction-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 Wochen
 
Java Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's StapelnJava Batch – Der Standard für's Stapeln
Java Batch – Der Standard für's Stapeln
 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlung
 
Der oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerterDer oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerter
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
XML-Socket-Server zur Kommunikation mit Flash
XML-Socket-Server zur Kommunikation mit FlashXML-Socket-Server zur Kommunikation mit Flash
XML-Socket-Server zur Kommunikation mit Flash
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 

Mehr von Renee Baecker (9)

2012 gpw yapc2012
2012 gpw yapc20122012 gpw yapc2012
2012 gpw yapc2012
 
Perl5 Maintenance Fund
Perl5 Maintenance FundPerl5 Maintenance Fund
Perl5 Maintenance Fund
 
Jenkins und Perl-Projekte
Jenkins und Perl-ProjekteJenkins und Perl-Projekte
Jenkins und Perl-Projekte
 
OPAR
OPAROPAR
OPAR
 
OPAR Vortrag auf der CeBIT 2011
OPAR Vortrag auf der CeBIT 2011OPAR Vortrag auf der CeBIT 2011
OPAR Vortrag auf der CeBIT 2011
 
Clt 2011 Perl Critic
Clt 2011 Perl CriticClt 2011 Perl Critic
Clt 2011 Perl Critic
 
Froscamp2010_perlcritic
Froscamp2010_perlcriticFroscamp2010_perlcritic
Froscamp2010_perlcritic
 
Froscamp2010_moose
Froscamp2010_mooseFroscamp2010_moose
Froscamp2010_moose
 
Fr os con2010_bmatrainer
Fr os con2010_bmatrainerFr os con2010_bmatrainer
Fr os con2010_bmatrainer
 

Fr os con2010_devel_nytprof