Profiling specific functions C++

I have looked into gprof. But dont quite understand how to acheive the following: I have written a clustering procedure. In each iteration 4 functions are called repetitively. There are about a 100000 iterations to be done. I want to find out how much time was spent in each function. These functions might call other sub functions and may involve data structures like hashmaps, maps etc. Bu

剖析特定函数C ++

我已经看过gprof。 但不太明白如何实现以下目标: 我写了一个集群过程。 在每次迭代中,4个函数被重复调用。 大约有100000次迭代要完成。 我想知道每个功能花了多少时间。 这些函数可能会调用其他子函数,并可能涉及像hashmaps,地图等数据结构。但我不在乎这些子函数。 我只想知道在所有迭代中花费在所有父函数上的总时间。 这将帮助我更好地优化我的程序。 gprof的问题在于,它分析了每个函数。 所以即使是stl数

Timings reported by profiler vs true timings

I have two chunks of code that do the same operation. One chunk written by myself, the other written by a third party. They are both compiled into a single executable. The third party code appears to be able to do its job much faster than mine. It can perform 1,500 operations per second compared to my 500. I then ran the executable within VTune, employing the callgraph profiling option, hopin

定时器报告的时间与真实时间

我有两块做相同操作的代码。 一个是我自己写的,另一个是第三方写的。 它们都被编译成一个可执行文件。 第三方代码似乎能够比我的工作快得多。 与我的500相比,它可以每秒执行1,500次操作。然后,我使用调用图分析选项在VTune中运行可执行文件,希望这能够显示我浪费时间的地方。 不幸的是,VTune诊断程序显示它认为每个函数需要的微秒数,声称我的函数和第三方函数每次调用大约需要0.002秒。 这是我的代码的亮点,但完全

Beyond Stack Sampling: C++ Profilers

A Hacker's Tale The date is 12/02/10. The days before Christmas are dripping away and I've pretty much hit a major road block as a windows programmer. I've been using AQTime, I've tried sleepy, shiny, and very sleepy, and as we speak, VTune is installing. I've tried to use the VS2008 profiler, and it's been positively punishing as well as often insensible. I've u

超越堆栈采样:C ++ Profiler

黑客的故事 日期是12/02/10。 圣诞节前的日子正在流逝,我几乎成为一个Windows程序员的主要障碍。 我一直在使用AQTime,我试过困了,有光泽,很困,而且正如我们所说,VTune正在安装。 我尝试过使用VS2008分析器,它一直是积极的惩罚,而且往往是无情的。 我使用了随机暂停技术。 我已经研究过调用树。 我发射了功能痕迹。 但令人痛心的事实是,我正在使用的应用程序有超过一百万行代码,可能还有价值百万的第三方应用

Profile optimised C++/C code

I have some heavily templated c++ code that I am working with. I can compile and profile with AMD tools and sleepy in debug mode. However without optimisation most of time spent concentrated in the templated code and STL. With optimised compilation, all the profile tools that I know produce garbage information. Does anybody know a good way to profile optimised native code PS1: The code that

配置文件优化的C ++ / C代码

我有一些沉重的模板化C ++代码,我正在使用。 我可以在调试模式下使用AMD工具进行编译和配置。 然而,如果没有优化,大部分时间都集中在模板代码和STL上。 通过优化的编译,我知道的所有配置文件工具都会生成垃圾信息。 有没有人知道一个好的方法来分析优化的本地代码 PS1:我正在编写的代码也大量模板化。 大部分时间花在未经优化的代码上都会被优化掉。 我说的是,96-97%的运行时间都是在模板化代码中进行的,没有进

How to get rid of void

I inherited a big application that was originally written in C (but in the mean time a lot of C++ was also added to it). Because of historical reasons, the application contains a lot of void-pointers. Before you start to choke, let me explain why this was done. The application contains many different data structures, but they are stored in 'generic' containers. Nowadays I would use t

如何摆脱空虚

我继承了一个最初用C编写的大型应用程序(但同时还增加了很多C ++)。 由于历史原因,该应用程序包含很多无效指针。 在你开始窒息之前,让我解释为什么这样做。 该应用程序包含许多不同的数据结构,但它们存储在“通用”容器中。 现在我会为它使用模板化的STL容器,或者我会为所有数据结构提供一个通用的基类,以便容器可以存储指向基类的指针,但是在[良好]旧C日,唯一的解决方案是将结构指针转换为void指针。 此外,有很

form "if" in C++

Possible Duplicate: Python Ternary Operator Is there a way to write this C/C++ code in Python? a = (b == true ? "123" : "456" ) a = '123' if b else '456' While a = 'foo' if True else 'bar' is the more modern way of doing the ternary if statement (python 2.5+), a 1-to-1 equivalent of your version might be: a = (b == True and "123" or "456" ) ... which in

在C ++中形成“if”

可能重复: Python三元运算符 有没有办法在Python中编写这个C / C ++代码? a = (b == true ? "123" : "456" ) a = '123' if b else '456' 虽然a = 'foo' if True else 'bar' else'bar a = 'foo' if True else 'bar'是执行三元if语句(python 2.5+)的更现代的方式,那么您的版本的1对1等效值可能是: a = (b == True and "123" or "456" ) ...在Python中应该

Do the parentheses after the type name make a difference with new?

If 'Test' is an ordinary class, is there any difference between: Test* test = new Test; and Test* test = new Test(); Let's get pedantic, because there are differences that can actually affect your code's behavior. Much of the following is taken from comments made to an "Old New Thing" article. Sometimes the memory returned by the new operator will be initialized,

类型名称后面的括号与新的有什么不同?

如果'测试'是一个普通的类,是否有任何区别: Test* test = new Test; 和 Test* test = new Test(); 让我们讨厌,因为实际上会影响代码行为的差异。 以下大部分内容摘自对“旧新事物”文章的评论。 有时,新运算符返回的内存将被初始化,有时它不会取决于新建的类型是POD(普通旧数据),还是包含POD成员的类,并且正在使用编译器生成的默认构造函数。 在C ++ 1998中,有两种类型的初始化:零和默认 在C ++ 200

(C++) Very Basic Questions Regarding Syntax

C++ novice here. I have some basic questions. In int main( int argc, char *argv[] ) How is char *argv[] supposed to be read (or spoken out to humans)? Is it possible to clear/erase specific content(s), character(s) in this case, of such array? If yes, how? Can arrays be resized? If yes, how? How can I copy the entire content of argv[] to a single std::string variable? Are there othe

(C ++)关于语法的非常基本的问题

这里的C ++新手。 我有一些基本的问题。 在int main( int argc, char *argv[] ) char *argv[]应该如何读取(或向人类说出)? 是否可以清除/擦除此类数组中的特定内容,字符? 如果是,如何? 数组可以调整大小吗? 如果是,如何? 如何将argv[]的全部内容复制到单个std::string变量中? 有没有其他方法可以确定argv[]没有argc的单词 / 参数的数量? 如果是,如何? (*) 我会很感激数字2-5的解释(不是代码

What does T&& (double ampersand) mean in C++11?

I've been looking into some of the new features of C++11 and one I've noticed is the double ampersand in declaring variables, like T&& var . For a start, what is this beast called? I wish Google would allow us to search for punctuation like this. What exactly does it mean? At first glance, it appears to be a double reference (like the C-style double pointers T** var ), but

T &&(双和号)在C ++ 11中意味着什么?

我一直在研究C ++ 11的一些新特性,并且我注意到了在声明变量时的双和号,比如T&& var 。 一开始,这个野兽叫什么? 我希望Google允许我们搜索这样的标点符号。 这究竟意味着什么? 乍一看,它似乎是一个双引用(就像C风格的双指针T** var ),但我很难想出一个用例。 它声明了一个右值引用(标准提案doc)。 这里是对右值引用的介绍。 以下是微软标准库开发人员对rvalue引用的深入了解。 (但在阅读本文

What is meant with "const" at end of function declaration?

Possible Duplicate: Meaning of “const” last in a C++ method declaration? Hi I got a book, where there is written something like: class Foo { public: int Bar(int random_arg) const { // code } }; Also, a by-the-way question: why should/shouldn't I use const before argument declarations? What does that change ? int Foo (const int Bar) { /* code */ } EDIT: So if I do

函数声明结束时的“const”是什么意思?

可能重复: C ++方法声明中最后一个“const”的含义? 你好,我有一本书,写有这样的东西: class Foo { public: int Bar(int random_arg) const { // code } }; 另外,还有一个问题:为什么我应该/不应该在参数声明之前使用const ? 这个改变是什么? int Foo (const int Bar) { /* code */ } 编辑:所以,如果我现在做: Foo v1, v2; (const标记的)Bar函数会在内存中存在3次还是1次? 一个“