목차
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 Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

wapi가 무엇인지에 대한 자세한 소개 wapi가 무엇인지에 대한 자세한 소개 Jan 07, 2024 pm 09:14 PM

사용자들은 인터넷을 사용하면서 와피(wapi)라는 용어를 접했을 수도 있지만, 와피가 무엇인지 모르는 사람들도 있을 것입니다. 다음은 모르는 사람들의 이해를 돕기 위해 자세히 소개한 것입니다. wapi란 무엇입니까? 답변: wapi는 무선 LAN 인증 및 기밀 유지를 위한 인프라입니다. 이는 일반적으로 사무실 건물과 같은 장소 근처에서 보호되는 적외선 및 블루투스와 같은 기능과 같습니다. 기본적으로 소규모 부서가 소유하므로 이 기능의 범위는 불과 몇 킬로미터에 불과합니다. wapi 관련 소개: 1. Wapi는 무선 LAN의 전송 프로토콜입니다. 2. 이 기술은 협대역 통신의 문제를 방지하고 더 나은 통신을 가능하게 합니다. 3. 신호를 전송하는 데는 하나의 코드만 필요합니다.

win11이 PUBG 게임을 실행할 수 있는지에 대한 자세한 설명 win11이 PUBG 게임을 실행할 수 있는지에 대한 자세한 설명 Jan 06, 2024 pm 07:17 PM

PlayerUnknown's Battlegrounds라고도 알려진 Pubg는 2016년 인기를 얻은 이후 많은 플레이어를 끌어모은 매우 고전적인 슈팅 배틀 로얄 게임입니다. 최근 win11 시스템이 출시된 후 많은 플레이어들이 win11에서 플레이하고 싶어합니다. win11이 pubg를 플레이할 수 있는지 편집기를 따라가 보겠습니다. win11이 pubg를 플레이할 수 있나요? 답변: Win11은 pubg를 플레이할 수 있습니다. 1. win11 초기에는 win11에서 tpm을 활성화해야 했기 때문에 많은 플레이어가 pubg에서 금지되었습니다. 2. 하지만 플레이어 여러분의 피드백을 바탕으로 블루홀에서는 이 문제를 해결하였고, 이제 win11에서도 정상적으로 pubg 플레이가 가능해졌습니다. 3. 술집을 만난다면

Python 함수 소개: exec 함수 소개 및 예 Python 함수 소개: exec 함수 소개 및 예 Nov 03, 2023 pm 02:09 PM

Python 함수 소개: exec 함수 소개 및 예 소개: Python에서 exec는 문자열이나 파일에 저장된 Python 코드를 실행하는 데 사용되는 내장 함수입니다. exec 함수는 코드를 동적으로 실행하는 방법을 제공하여 프로그램이 런타임 중에 필요에 따라 코드를 생성, 수정 및 실행할 수 있도록 합니다. 이 기사에서는 exec 함수를 사용하는 방법을 소개하고 몇 가지 실용적인 코드 예제를 제공합니다. exec 함수 사용 방법: exec 함수의 기본 구문은 다음과 같습니다. exec

i5 프로세서에 win11을 설치할 수 있는지 여부에 대한 자세한 소개 i5 프로세서에 win11을 설치할 수 있는지 여부에 대한 자세한 소개 Dec 27, 2023 pm 05:03 PM

i5는 인텔이 보유한 프로세서 시리즈로, 11세대 i5의 다양한 버전이 있으며, 세대마다 성능이 다릅니다. 따라서 i5 프로세서가 win11을 설치할 수 있는지 여부는 어떤 세대의 프로세서인지에 따라 별도로 알아보겠습니다. i5 프로세서를 win11과 함께 설치할 수 있습니까? 답: i5 프로세서는 win11과 함께 설치할 수 있습니다. 1. 8세대 및 후속 i51, 8세대 및 후속 i5 프로세서는 Microsoft의 최소 구성 요구 사항을 충족할 수 있습니다. 2. 따라서 Microsoft 웹 사이트에 들어가서 "Win11 설치 도우미"만 다운로드하면 됩니다. 3. 다운로드가 완료된 후 설치 도우미를 실행하고 프롬프트에 따라 Win11을 설치합니다. 2. i51 8세대 이전과 8세대 이후

최신 Win 11 사운드 튜닝 방법 소개 최신 Win 11 사운드 튜닝 방법 소개 Jan 08, 2024 pm 06:41 PM

최신 win11로 업데이트한 후 많은 사용자가 시스템 사운드가 약간 변경되었지만 이를 조정하는 방법을 알지 못합니다. 따라서 오늘 이 사이트에서는 컴퓨터의 최신 win11 사운드 조정 방법을 소개합니다. 작동 방법도 어렵지 않습니다. 선택 사항도 다양합니다. 와서 다운로드하여 사용해 보세요. 최신 컴퓨터 시스템 Windows 11의 사운드 조정 방법 1. 먼저 바탕 화면 오른쪽 하단의 사운드 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "재생 설정"을 선택합니다. 2. 그런 다음 설정을 입력하고 재생 표시줄에서 "스피커"를 클릭합니다. 3. 그런 다음 오른쪽 하단의 "속성"을 클릭하십시오. 4. 속성에서 "향상" 옵션 표시줄을 클릭하세요. 5. 이때 '모든 음향효과 비활성화' 앞의 √가 체크되어 있으면 취소해 주세요. 6. 그 후 아래에서 설정할 음향 효과를 선택하고 클릭하세요.

엣지 단축키 소개 엣지 단축키 소개 Jul 12, 2023 pm 05:57 PM

오늘날의 빠른 생활 속에서 업무 효율을 높이기 위해서는 단축키는 필수적인 업무 요건입니다. 바로 가기 키는 일반적으로 마우스를 사용하여 수행되는 작업을 수행하는 대체 방법을 제공하는 키 또는 키 조합입니다. 그렇다면 엣지 단축키는 무엇일까요? 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 통합 개발 환경입니다. 그 중 교체 기능은 개발 과정에서 자주 사용되는 기능 중 하나로, 개발자가 코드를 빠르게 수정하고 코드 품질을 향상시키는 데 도움을 줄 수 있습니다. 이 기사에서는 초보자가 이 기능을 더 잘 익히고 사용할 수 있도록 특정 코드 예제와 함께 PyCharm의 대체 기능을 자세히 소개합니다. 대체 기능 소개 PyCharm의 대체 기능은 개발자가 코드에서 지정된 텍스트를 빠르게 대체하는 데 도움이 될 수 있습니다.

컴퓨터의 프린터 드라이버 위치에 대한 자세한 정보 컴퓨터의 프린터 드라이버 위치에 대한 자세한 정보 Jan 08, 2024 pm 03:29 PM

많은 사용자가 컴퓨터에 프린터 드라이버를 설치했지만 이를 찾는 방법을 모릅니다. 그래서 오늘은 컴퓨터에서 프린터 드라이버의 위치에 대해 자세히 소개하겠습니다. 아직 모르시는 분들을 위해 원래 의미를 바꾸지 않고 내용을 다시 작성할 때 프린터 드라이버를 찾을 수 있는 위치를 살펴보겠습니다. 언어를 중국어로 다시 작성해야 하며 원래 문장이 표시될 필요는 없습니다. 먼저 타사 소프트웨어를 사용하여 검색하는 것이 좋습니다. 2. 오른쪽 상단에서 "도구 상자"를 찾습니다. 아래의 "장치 관리자"를 클릭하세요. 다시 쓴 문장: 3. 하단의 "장치 관리자"를 찾아 클릭합니다. 4. 그런 다음 "인쇄 대기열"을 열고 프린터 장치를 찾습니다. 이번에는 프린터 이름과 모델입니다. 5. 프린터 장치를 마우스 오른쪽 버튼으로 클릭하면 업데이트하거나 제거할 수 있습니다.

See all articles