Inhaltsverzeichnis
Comments
Related posts:
Heim php教程 php手册 一个小玩意PHP-Valgrind的介绍

一个小玩意PHP-Valgrind的介绍

Jun 06, 2016 pm 08:10 PM
介绍 Autor

作者: Laruence( ) 本文地址: http://www.laruence.com/2013/08/14/2899.html 转载请注明出处 首先, 太久不更新博客了, 容我先啰嗦几句. 我一直以为人总是会挤出时间写博客的, 但现在看来我错了. 博客很久不更新, 倒不是说没有内容可以分享. 而是这一年来确

  • 作者: Laruence(一个小玩意PHP-Valgrind的介绍 一个小玩意PHP-Valgrind的介绍 一个小玩意PHP-Valgrind的介绍 一个小玩意PHP-Valgrind的介绍)
  • 本文地址: http://www.laruence.com/2013/08/14/2899.html
  • 转载请注明出处

首先, 太久不更新博客了, 容我先啰嗦几句.

我一直以为人总是会挤出时间写博客的, 但现在看来我错了. 博客很久不更新, 倒不是说没有内容可以分享. 而是这一年来确实忙了很多, 本身工作上的事情就很多, 业余时间也被PHP项目上的事情, Zend的事情填满. 再加上一些小感悟也都在微博上牢骚了… 所以….

Anyway, 很感谢各位经常来我博客的朋友, 不过我建议大家如果是提问的话, 不要在留言里, 有的时候会被博客当做SPAM, 有一些小问题, 可以来微博At我 @laruence

言归正传, 今天分享个前天刚刚做的小工具, 代码可以在我的github上找到: php-valgrind. 这个工具主要是为PHP脚本提供了可以在脚本中开启Valgrind(严格说是Callgrind)的Profile能力.

一般来说, 我们用Callgrind的时候, 如果要分析某一个函数, 可以通过toggle-collect=”函数名”, 来告诉Callgrind在进入这个函数的时候开始Profile. 但是这样没有办法分析具体某一段代码..

其实Callgrind提供了一个机制, 可以让我们在代码中控制何时开启: CALLGRIND_TOGGLE_COLLECT

比如:

#include <stdio.h>
#include <valgrind>

void foo(int a[100]) {
    int i = 0;
}

int main (int argc, char **argv) {
    int i, a[100];

    CALLGRIND_START_INSTRUMENTATION;
    CALLGRIND_TOGGLE_COLLECT;
    for (i=0; i
<p>然后, 编译成a.out以后, 我们就可以分析具体的这个循环代码断的相关Profile信息:</p>
<pre class="brush:php;toolbar:false">
$ valgrind --tool=callgrind --collect-atstart=no --instr-atstart=no ./a.out
Nach dem Login kopieren

之后生成的callgrind.out就可以被callgrind_annotate, kcachegrind等工具来分析了

$callgrind_annotate callgrind.out.27538
//OUTPUT:
--------------------------------------------------------------------------------
 Ir
---------------------------------------
617  PROGRAM TOTALS

---------------------------------------
 Ir  file:function
---------------------------------------
617  test.c:main [***dev/a.out]
Nach dem Login kopieren

是不是很方便呢?

但是呢, 有的时候, 比如我们做扩展, 或者其他的一类内部的性能分析的时候. 需要在PHP脚本也能做这样的触发. 就没有办法了. 于是我就写了这个小工具php-valgrind, 装好这个扩展以后, 来看个例子:

<?php $a = array();
callgrind_toggle();
for ($i=0;$i<1000;$i++) {
    $a[$i] = 2;
}
callgrind_toggle();
Nach dem Login kopieren

然后我们开始分析:

$valgrind --tool=callgrind --collect-atstart=no --instr-atstart=no php /tmp/1.php
Nach dem Login kopieren

然后我们分析下输出:

-------------------------
       Ir
--------------------------
2,361,260  PROGRAM TOTALS

//以下省略
Nach dem Login kopieren

然后让我们用qcachegrind(带gui的callgrind分析工具), 来看看:
callgrind.output

可见, PHP要实现同样的功能需要的各种代码数相比C语言来说, 那可是多了N倍的(所以当然要比C慢了.. 嘿嘿, 再次申明: “C语言是最好的语言, 没有之一!”)

好了工具介绍完毕, 大家有兴趣的可以去玩玩, 这个工具还可以用来让我们了解, 我们的一个PHP代码, 会触发调用那些底层的函数, 或者系统调用等等, Enjoy~


Comments

  • 2013/08/14, 秋风 writes: 终于更新了,试试!
  • 2013/08/14, 夜丶有雪 writes: 前排留名、广告位招租 C语言是最好的语言, 没有之一!
  • 2013/08/14, pakey writes: 没有抢到沙发
  • 2013/08/14, 微历史 writes: 保持更新很重要
  • 2013/08/14, 风逐蓝天 writes: PHP 是最好的语言~~~
  • 2013/08/14, php230 writes: V5
  • 2013/08/14, 我叫张大熊 writes: 微博私信问了你一个问题 可是还没有得到回答 求回答啊
  • 2013/08/14, 我叫张大熊 writes: 微博私信问了你一个问题 可是还没有得到回答 求回答啊
  • 2013/08/15, eagle writes: 需要另行安装Callgrind吗?
  • 2013/08/15, eagle writes: 需要另行安装Callgrind吗?
  • 2013/10/14, wclssdn writes: 我也在微博问过大牛好几个问题.. 就是不理我... 汗... 还有. 类似大牛的这个工具可以用xhprof.. 有图片展示方式... 太直观了... 数据表格也更丰富...
  • 2013/12/18, goodboy writes: “C语言是最好的语言” ......
  • 2014/02/19, Winona writes: I was curious if you ever thought of changing the page layout of your website? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having one or two pictures. Maybe you could space it out better?
  • 2014/02/27, real estate preview writes: ?e're a ?roup ?f volunteers and starting a brand new scheme in ?ur community. Your web site provided us with u?еful information to work on. You have done a formidable job and ouг whole gro?p can be thankful to you. ?ere i? my blog: real estate preview
  • 2014/09/10, computer repairs, apple mac pro reviews, cell phone repair, computer support,mercadolibre writes: Its 23-inch screen is already written on Apple's website because "Discontinued. As a result, the smaller sized or thinner the notebook, the lesser the capabilities in view that they are pressured to go out some ports. Feel free to visit my web blog: computer repairs, apple mac pro reviews, cell phone repair, computer support,mercadolibre
  • 2014/10/17, Nigel writes: 模板大神而来~~~~~

  • 注意PHP对字符串的递增运算
  • GCC优化引起的一个”问题”

Copyright © 2010 风雪之隅 版权所有, 转载务必注明. 该Feed只供个人使用, 禁止未注明的转载或商业应用. 非法应用的, 一切法律后果自负. 如有问题, 可发E-mail至my at laruence.com.(Digital Fingerprint: 73540ba0a1738d7d07d4b6038d5615e2)
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Detaillierte Einführung in Wapi Detaillierte Einführung in Wapi Jan 07, 2024 pm 09:14 PM

Benutzer haben möglicherweise den Begriff Wapi bei der Nutzung des Internets gesehen, aber einige Leute wissen definitiv nicht, was Wapi ist. Im Folgenden finden Sie eine detaillierte Einführung, um denjenigen, die es nicht wissen, das Verständnis zu erleichtern. Was ist Wapi: Antwort: Wapi ist die Infrastruktur für WLAN-Authentifizierung und Vertraulichkeit. Dies entspricht Funktionen wie Infrarot und Bluetooth, die im Allgemeinen in der Nähe von Orten wie Bürogebäuden verfügbar sind. Im Grunde sind sie Eigentum einer kleinen Abteilung, sodass der Umfang dieser Funktion nur wenige Kilometer beträgt. Verwandte Einführung in Wapi: 1. Wapi ist ein Übertragungsprotokoll im WLAN. 2. Diese Technologie kann die Probleme der Schmalbandkommunikation vermeiden und eine bessere Kommunikation ermöglichen. 3. Zur Übertragung des Signals ist nur ein Code erforderlich.

Detaillierte Erklärung, ob Win11 das PUBG-Spiel ausführen kann Detaillierte Erklärung, ob Win11 das PUBG-Spiel ausführen kann Jan 06, 2024 pm 07:17 PM

Pubg, auch bekannt als PlayerUnknown's Battlegrounds, ist ein sehr klassisches Battle-Royale-Shooter-Spiel, das seit seiner Popularität im Jahr 2016 viele Spieler angezogen hat. Nach der kürzlichen Einführung des Win11-Systems möchten viele Spieler es auf Win11 spielen. Folgen wir dem Editor, um zu sehen, ob Win11 Pubg spielen kann. Kann Win11 Pubg spielen? Antwort: Win11 kann Pubg spielen. 1. Zu Beginn von Win11 wurden viele Spieler von Pubg ausgeschlossen, da Win11 TPM aktivieren musste. 2. Basierend auf dem Feedback der Spieler hat Blue Hole dieses Problem jedoch gelöst, und jetzt können Sie Pubg unter Win11 normal spielen. 3. Wenn Sie eine Kneipe treffen

Einführung in Python-Funktionen: Einführung und Beispiele der Exec-Funktion Einführung in Python-Funktionen: Einführung und Beispiele der Exec-Funktion Nov 03, 2023 pm 02:09 PM

Einführung in Python-Funktionen: Einführung und Beispiele der Exec-Funktion Einführung: In Python ist Exec eine integrierte Funktion, die zum Ausführen von Python-Code verwendet wird, der in einer Zeichenfolge oder Datei gespeichert ist. Die exec-Funktion bietet eine Möglichkeit, Code dynamisch auszuführen, sodass das Programm während der Laufzeit nach Bedarf Code generieren, ändern und ausführen kann. In diesem Artikel wird die Verwendung der Exec-Funktion vorgestellt und einige praktische Codebeispiele gegeben. So verwenden Sie die Exec-Funktion: Die grundlegende Syntax der Exec-Funktion lautet wie folgt: exec

Detaillierte Einführung, ob der i5-Prozessor Win11 installieren kann Detaillierte Einführung, ob der i5-Prozessor Win11 installieren kann Dec 27, 2023 pm 05:03 PM

i5 ist eine Prozessorserie von Intel. Es gibt verschiedene Versionen des i5 der 11. Generation, und jede Generation hat eine unterschiedliche Leistung. Ob der i5-Prozessor win11 installieren kann, hängt daher davon ab, um welche Generation des Prozessors es sich handelt. Folgen wir dem Editor, um mehr darüber zu erfahren. Kann der i5-Prozessor mit Win11 installiert werden: Antwort: Der i5-Prozessor kann mit Win11 installiert werden. 1. Die Prozessoren der achten Generation und nachfolgender i51, der achten Generation und nachfolgender i5-Prozessoren können die Mindestkonfigurationsanforderungen von Microsoft erfüllen. 2. Daher müssen wir nur die Microsoft-Website aufrufen und einen „Win11-Installationsassistenten“ herunterladen. 3. Nachdem der Download abgeschlossen ist, führen Sie den Installationsassistenten aus und befolgen Sie die Anweisungen zur Installation von Win11. 2. i51 vor der achten Generation und nach der achten Generation

Wir stellen die neueste Sound-Tuning-Methode für Win 11 vor Wir stellen die neueste Sound-Tuning-Methode für Win 11 vor Jan 08, 2024 pm 06:41 PM

Nach dem Update auf das neueste Win11 stellen viele Benutzer fest, dass sich der Sound ihres Systems leicht verändert hat, sie wissen jedoch nicht, wie sie ihn anpassen können. Deshalb bietet Ihnen diese Website heute eine Einführung in die neueste Win11-Soundanpassungsmethode für Ihren Computer. Die Bedienung ist nicht schwer und die Auswahl ist vielfältig. Laden Sie sie herunter und probieren Sie sie aus. So passen Sie den Sound des neuesten Computersystems Windows 11 an 1. Klicken Sie zunächst mit der rechten Maustaste auf das Soundsymbol in der unteren rechten Ecke des Desktops und wählen Sie „Wiedergabeeinstellungen“. 2. Geben Sie dann die Einstellungen ein und klicken Sie in der Wiedergabeleiste auf „Lautsprecher“. 3. Klicken Sie anschließend unten rechts auf „Eigenschaften“. 4. Klicken Sie in den Eigenschaften auf die Optionsleiste „Erweitern“. 5. Wenn zu diesem Zeitpunkt das √ vor „Alle Soundeffekte deaktivieren“ aktiviert ist, brechen Sie den Vorgang ab. 6. Danach können Sie unten die Soundeffekte zum Einstellen auswählen und klicken

Einführung in Edge-Tastenkombinationen Einführung in Edge-Tastenkombinationen Jul 12, 2023 pm 05:57 PM

Im heutigen schnellen Leben sind Tastenkombinationen eine wesentliche Arbeitsvoraussetzung, um die Arbeitseffizienz zu verbessern. Eine Tastenkombination ist eine Taste oder Tastenkombination, die eine alternative Möglichkeit bietet, eine Aktion auszuführen, die normalerweise mit der Maus ausgeführt wird. Was sind also die Edge-Tastenkombinationen? Welche Funktionen haben Edge-Tastenkombinationen? Der unten stehende Herausgeber hat eine Einführung in Edge-Tastenkombinationen zusammengestellt. Interessierte Freunde sollten vorbeikommen und einen Blick darauf werfen! Strg+D: Aktuelle Seite zu Favoriten oder Leseliste hinzufügen Strg+E: Suchabfrage in der Adressleiste durchführen Strg+F: Auf der Seite suchen Strg+H: Verlaufsfenster öffnen Strg+G: Leselistenfenster öffnen Strg+I: Favoritenlistenfenster öffnen (der Test scheint nicht zu funktionieren) Strg+J: Öffnen

PyCharm-Einsteigerhandbuch: Umfassende Analyse von Ersetzungsfunktionen PyCharm-Einsteigerhandbuch: Umfassende Analyse von Ersetzungsfunktionen Feb 25, 2024 am 11:15 AM

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung mit umfangreichen Funktionen und Tools, die die Entwicklungseffizienz erheblich verbessern können. Unter diesen ist die Ersetzungsfunktion eine der im Entwicklungsprozess häufig verwendeten Funktionen, die Entwicklern helfen kann, den Code schnell zu ändern und die Codequalität zu verbessern. In diesem Artikel wird die Ersetzungsfunktion von PyCharm ausführlich vorgestellt, kombiniert mit spezifischen Codebeispielen, um Anfängern zu helfen, diese Funktion besser zu beherrschen und zu verwenden. Einführung in die Ersetzungsfunktion Die Ersetzungsfunktion von PyCharm kann Entwicklern dabei helfen, bestimmten Text im Code schnell zu ersetzen

Detaillierte Informationen zum Speicherort des Druckertreibers auf Ihrem Computer Detaillierte Informationen zum Speicherort des Druckertreibers auf Ihrem Computer Jan 08, 2024 pm 03:29 PM

Viele Benutzer haben Druckertreiber auf ihren Computern installiert, wissen aber nicht, wie sie diese finden können. Deshalb gebe ich Ihnen heute eine detaillierte Einführung in den Speicherort des Druckertreibers im Computer. Für diejenigen, die es noch nicht wissen, werfen wir einen Blick darauf, wo der Druckertreiber zu finden ist, ohne die ursprüngliche Bedeutung zu ändern. Sie müssen die Sprache auf Chinesisch umschreiben und der Originalsatz muss nicht angezeigt werden. Es wird empfohlen, für die Suche 2. Suchen Sie nach „Toolbox“. Klicken Sie unten auf „Geräte-Manager“. Umgeschriebener Satz: 3. Suchen Sie unten nach „Geräte-Manager“ und klicken Sie darauf. 4. Öffnen Sie dann „Druckwarteschlange“ und suchen Sie Ihr Druckergerät. Diesmal sind es der Name und das Modell Ihres Druckers. 5. Klicken Sie mit der rechten Maustaste auf das Druckergerät und Sie können es aktualisieren oder deinstallieren.

See all articles