目次
Comments
Related posts:
ホームページ php教程 php手册 一个小玩意PHP-Valgrind的介绍

一个小玩意PHP-Valgrind的介绍

Jun 06, 2016 pm 08:10 PM
導入 著者

作者: 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
ログイン後にコピー

之后生成的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]
ログイン後にコピー

是不是很方便呢?

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

<?php $a = array();
callgrind_toggle();
for ($i=0;$i<1000;$i++) {
    $a[$i] = 2;
}
callgrind_toggle();
ログイン後にコピー

然后我们开始分析:

$valgrind --tool=callgrind --collect-atstart=no --instr-atstart=no php /tmp/1.php
ログイン後にコピー

然后我们分析下输出:

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

//以下省略
ログイン後にコピー

然后让我们用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)
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

wapiとは何かを詳しく紹介 wapiとは何かを詳しく紹介 Jan 07, 2024 pm 09:14 PM

インターネットを利用する際に「wapi」という言葉を目にしたことはあるかもしれませんが、「wapi」が何なのかよく分からないという方もいると思いますので、以下で詳しくご紹介します。 wapi とは: 回答: wapi は、無線 LAN の認証と機密性を確保するためのインフラストラクチャです。一般的にオフィスビルなどの近くでカバーされる赤外線やBluetoothなどの機能と似ています。基本的にこれらは小さな部門によって所有されているため、この機能の範囲はわずか数キロメートルです。 wapi の関連紹介: 1. Wapi は無線 LAN の伝送プロトコルです。 2. この技術により、狭帯域通信の問題を回避し、より良好な通信が可能になります。 3. 信号の送信に必要なコードは 1 つだけです

win11でPUBGゲームが実行できるか詳しく解説 win11でPUBGゲームが実行できるか詳しく解説 Jan 06, 2024 pm 07:17 PM

PlayerUnknown's Battlegrounds としても知られる Pubg は、2016 年の人気以来、多くのプレイヤーを魅了してきた非常に古典的なシューティング バトル ロイヤル ゲームです。最近win11システムがリリースされた後、多くのプレイヤーがwin11でpubgをプレイしたいと考えています。編集者に従ってwin11でpubgをプレイできるかどうかを確認してみましょう。 win11 で pubg をプレイできますか? 回答: Win11 で pubg をプレイできます。 1. win11の開始当初、win11ではtpmを有効にする必要があったため、多くのプレイヤーがpubgから追放されました。 2. しかし、プレイヤーのフィードバックに基づいて、Blue Hole はこの問題を解決し、win11 で pubg を正常にプレイできるようになりました。 3.居酒屋に出会ったら

Python 関数入門: exec 関数の概要と例 Python 関数入門: exec 関数の概要と例 Nov 03, 2023 pm 02:09 PM

Python 関数の紹介: exec 関数の概要と例 はじめに: Python では、exec は、文字列またはファイルに格納されている Python コードを実行するために使用される組み込み関数です。 exec 関数はコードを動的に実行する方法を提供し、プログラムが実行時に必要に応じてコードを生成、変更、実行できるようにします。この記事では、exec 関数の使い方と実用的なコード例を紹介します。 exec 関数の使用方法: exec 関数の基本的な構文は次のとおりです。

i5プロセッサがwin11をインストールできるかどうかの詳細な紹介 i5プロセッサがwin11をインストールできるかどうかの詳細な紹介 Dec 27, 2023 pm 05:03 PM

i5 は Intel が所有するプロセッサのシリーズで、第 11 世代 i5 にはさまざまなバージョンがあり、世代ごとに性能が異なります。したがって、i5 プロセッサーが win11 をインストールできるかどうかは、プロセッサーの世代によって異なりますので、エディターに従って個別に学習しましょう。 i5 プロセッサーは win11 にインストールできますか: 回答: i5 プロセッサーは win11 にインストールできます。 1. 第 8 世代以降の i51、第 8 世代以降の i5 プロセッサは、Microsoft の最小構成要件を満たすことができます。 2. したがって、Microsoft Web サイトにアクセスして「Win11 インストール アシスタント」をダウンロードするだけで済みます。 3. ダウンロードが完了したら、インストール アシスタントを実行し、プロンプトに従って Win11 をインストールします。 2. i51 8世代以前と8世代以降

最新のWin11サウンドチューニング方法を紹介 最新のWin11サウンドチューニング方法を紹介 Jan 08, 2024 pm 06:41 PM

最新の win11 にアップデートした後、システムのサウンドが少し変わったように感じますが、調整方法がわからないという人が多いので、このサイトでは、最新の win11 サウンド調整方法を紹介します。操作は難しくなく、選択肢も豊富ですので、ぜひダウンロードして試してみてください。最新のコンピュータ システム Windows 11 のサウンドを調整する方法 1. まず、デスクトップの右下隅にあるサウンド アイコンを右クリックし、「再生設定」を選択します。 2. 次に設定を入力し、再生バーの「スピーカー」をクリックします。 3. 次に、右下の「プロパティ」をクリックします。 4. プロパティの「拡張」オプションバーをクリックします。 5. この時、「すべての効果音を無効にする」の前にある√にチェックが入っている場合は、チェックを外します。 6. その後、以下の効果音を選択して設定し、クリックします。

Edge ショートカット キーの概要 Edge ショートカット キーの概要 Jul 12, 2023 pm 05:57 PM

今日の速い生活では、作業効率を向上させるために、ショートカット キーは必須の作業要件です。ショートカット キーは、通常マウスを使用して実行されるアクションを実行するための代替方法を提供するキーまたはキーの組み合わせです。では、Edge のショートカット キーとは何でしょうか? Edgeのショートカットキーの機能は何ですか?以下の編集者がedgeのショートカットキーの紹介をまとめていますので、興味のある方はぜひ見に来てください! Ctrl+D: 現在のページをお気に入りまたはリーディング リストに追加します Ctrl+E: アドレス バーで検索クエリを実行します Ctrl+F: ページ上で検索 Ctrl+H: 履歴パネルを開きます Ctrl+G: リーディング リスト パネルを開きますCtrl + I: お気に入りリスト パネルを開きます (テストは機能しないようです) Ctrl + J: 開く

PyCharm 初心者ガイド: 置換関数の包括的な分析 PyCharm 初心者ガイド: 置換関数の包括的な分析 Feb 25, 2024 am 11:15 AM

PyCharm は、開発効率を大幅に向上させる豊富な機能とツールを備えた強力な Python 統合開発環境です。その中でも置換機能は開発プロセスで頻繁に使用される機能の 1 つであり、開発者がコードを迅速に修正し、コードの品質を向上させるのに役立ちます。この記事では、初心者がこの関数をよりよく習得して使用できるように、特定のコード例と組み合わせて PyCharm の置換関数を詳細に紹介します。置換関数の概要 PyCharm の置換関数は、開発者がコード内の指定されたテキストを迅速に置換するのに役立ちます

コンピューター上のプリンタードライバーの場所に関する詳細情報 コンピューター上のプリンタードライバーの場所に関する詳細情報 Jan 08, 2024 pm 03:29 PM

多くのユーザーは、コンピューターにプリンター ドライバーをインストールしていますが、そのドライバーを見つける方法がわかりません。そこで、今日は、コンピューターのプリンタードライバーの場所について詳しくご紹介します。まだ知らない人のために、プリンタードライバーの場所を見てみましょう。元の意味を変えずに内容を書き換える場合、言語は中国語に書き換えられ、元の文章が表示される必要はありません。まず、サードパーティのソフトウェアを使用して検索することをお勧めします。 2. 右上隅の「ツールボックス」を見つけます。下の「デバイスマネージャー」をクリックします。書き換えられた文: 3. 下部にある [デバイス マネージャー] を見つけてクリックします。 4. 次に、[印刷キュー] を開いてプリンター デバイスを見つけます。今回はプリンターの名前とモデルです。 5. プリンター デバイスを右クリックすると、更新またはアンインストールできます。

See all articles