c – 无法使用gprof – gnu分析器累积时间

我在
Windows上运行cygwin并使用最新版本的gprof来分析我的代码.我的问题是我的代码中的每个函数的平面轮廓显示为零秒,我甚至尝试循环函数(尝试for循环一百万)但gprof无法随时累积.请帮助.这是我的一个示例函数.

bool is_adjacent(const char* a ,const char* b)
{
  for(long long iter=0;iter<=1000000;iter++){
  string line1="qwertyuiop";
  string line2="asdfghjkl";
  string line3="zxcvbnm";
  string line4="1234567890";
  int pos=line1.find(*a);
  if(pos!=string::npos){
    if ((line1[pos++]==*b)||((pos!=0)&&(line1[pos--]==*b)))
      return true;
    else return false;}
  pos=line2.find(*a);  
  if(pos!=string::npos){
    if ((line2[pos++]==*b)||((pos!=0)&&(line2[pos--]==*b)))
      return true;
    else return false;}
  pos=line3.find(*a);  
  if(pos!=string::npos){
    if ((line3[pos++]==*b)||((pos!=0)&&(line3[pos--]==*b)))
      return true;
    else return false;}
  pos=line4.find(*a);  
  if(pos!=string::npos){
    if ((line4[pos++]==*b)||((pos!=0)&&(line4[pos--]==*b)))
      return true;
    else return false;}
  }
} 

最佳答案 我不时遇到这个问题. ESP.在严格的线程代码中.

您可以将valgrind与–callgrind选项(工具)一起使用,这将使您至少可以更详细地查看每个函数调用的时间.还有一个kde工具可视化输出(和eswp.调用图),更好地称为kcachegrind.不知道你是否可以在cygwin上安装它.

点赞