gprofiler不打印时间摘要
gprof profiler does not print the time summary
我创建了一个简单的程序:
#include <unistd.h>
void ssleep(unsigned int s)
{
usleep(1000000*s);
}
int main(int, char**)
{
ssleep(1);
}
命令后:
sch@sch-K52F:~/test$ g++ -pedantic -Wall main.cpp -pg
sch@sch-K52F:~/test$ ./a.out
sch@sch-K52F:~/test$ gprof -b a.out > profile
我得到一个没有时间摘要的配置文件:
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1 0.00 0.00 ssleep(unsigned int)
与任何其他代码的情况相同。我错过什么了吗?
我系统:sch@sch-K52F:~/test$ uname -a
Linux sch-K52F 3.2.0-45-generic-pae #70-Ubuntu SMP Wed May 29 20:31:05 UTC 2013 i686 i686 i386 GNU/Linux
sch@sch-K52F:~/test$ gprof -v
GNU gprof (GNU Binutils for Ubuntu) 2.22
Based on BSD gprof, copyright 1983 Regents of the University of California.
This program is free software. This program has absolutely no warranty.
谢谢
编辑1)
其他的例子:
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1482 0.00 0.00 std::_Iter_base<unsigned char*, false>::_S_base(unsigned char*)
0.00 0.00 0.00 1482 0.00 0.00 std::_Niter_base<unsigned char*>::iterator_type std::__niter_base<unsigned char*>(unsigned char*)
0.00 0.00 0.00 1247 0.00 0.00 std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_get_Tp_allocator()
0.00 0.00 0.00 988 0.00 0.00 __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >::base() const
0.00 0.00 0.00 988 0.00 0.00 std::move_iterator<unsigned char*>::base() const
0.00 0.00 0.00 988 0.00 0.00 std::vector<unsigned char, std::allocator<unsigned char> >::size() const
0.00 0.00 0.00 988 0.00 0.00 std::_Iter_base<std::move_iterator<unsigned char*>, true>::_S_base(std::move_iterator<unsigned char*>)
0.00 0.00 0.00 988 0.00 0.00 std::move_iterator<unsigned char*>::move_iterator(unsigned char*)
0.00 0.00 0.00 988 0.00 0.00 std::_Miter_base<std::move_iterator<unsigned char*> >::iterator_type std::__miter_base<std::move_iterator<unsigned char*> >(std::move_iterator<unsigned char*>)
0.00 0.00 0.00 988 0.00 0.00 std::move_iterator<unsigned char*> std::make_move_iterator<unsigned char*>(unsigned char* const&)
0.00 0.00 0.00 741 0.00 0.00 __gnu_cxx::new_allocator<unsigned char>::max_size() const
0.00 0.00 0.00 555 0.00 0.00 operator new(unsigned int, void*)
0.00 0.00 0.00 541 0.00 0.00 void std::_Destroy_aux<true>::__destroy<unsigned char*>(unsigned char*, unsigned char*)
0.00 0.00 0.00 541 0.00 0.00 std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_deallocate(unsigned char*, unsigned int)
0.00 0.00 0.00 541 0.00 0.00 void std::_Destroy<unsigned char*>(unsigned char*, unsigned char*)
我总是得到零时间,对于任何代码,任何函数;/
这是因为sleep()不算作进程执行时间的一部分,而是算作睡眠时间。也就是说,你的进程在请求的时间内被内核置于休眠状态,并且不使用任何CPU周期。试着用一些真正计算的循环。此外,gprof似乎无法为系统调用和其他事情计时。它还存在其他问题。Gprof的目的是比较在您自己的代码的连续重构中获得的性能收益,而不是作为一个通用的基准测试工具。
相关文章:
- 将时间戳打印到流的最简单方法
- 如何在 for 循环中的特定时间内获取要打印的额外值
- 控制台打印时间功能产生1
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 我可以避免通过time_t打印时间点吗
- 我的C++程序如何访问计算机的日期和时间以打印和使用当前年份?
- 如何在python和C++中以毫秒为单位打印相同的时间
- 测量我的随机数数组打印的时间始终显示为 0 秒
- 将纳秒(自午夜以来)转换为可打印时间
- 打印所有可能有 4 个字母的单词的时间太多
- 一个循环,可以打印所有项目(无论链条多长时间) *指针
- 如何使用谷歌测试打印标准::时间类型
- Poco 日期时间格式化程序 - 使用当前时区打印时间戳
- 我的函数返回的是打印到控制台,它只会在我调用它时每隔一段时间C++
- 我正在打印当前时间,但我的数量与时间无关
- C++11打印当前系统时间(包括毫秒)
- 如何正确使用 ctime() 打印不同的时间戳
- sprintf,不打印时间(0)和其他值
- 如果我没有收到来自客户端的消息,如何每 20 秒打印一次日期时间
- C++ win32 以固定的时间步长打印到控制台