1
1
我发现 oprofile 在这种情况下,要比gprof更好地进行分析。这个 reports from oprofile 更全面。我用ifndef配置文件从C扩展编译了导致SEG错误的Ruby部分(并非所有部分都是),并用非Ruby代码替换了它们。我在扩展本身中编写了一个main()例程来调用扩展中的函数。然后我设置了一个makefile,将扩展编译为一个定义了profile的C程序。然后我 installed oprofile on Ubuntu . 写了这个剧本。
编译了我的程序,并执行了上面的脚本,该脚本通过“opreport”命令提供如下输出:
这里是:最大的使用者是函数levenshtein()。接下来是另一个命令,生成用源代码和每行的执行计数/时间注释的反汇编输出。如下所示(计数/次数在每行执行的左侧):
|
2
1
你可以做得比 GPROF . 考虑 stackshots . 你可以用 堆栈 , LSStad (如果可以),或者在调试器下手动暂停。 Here's a short intro to the technique. |
3
0
您可以通过分析器运行Ruby解释器本身。如果这太多,编写一个小的C程序,加载共享库并调用其导出的函数。然后分析那个C程序。它可以避免维护库的两个版本。 |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |