gpt4 book ai didi

c++ - 配置文件花费的时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:00 25 4
gpt4 key购买 nike

我正在寻找一些工具来分析时间花在了哪里。看过 oprofile,但这并不能真正满足我的需求。

我正在查看 callgrind,特别是使用 CALLGRIND_START_INSTRUMENTATION 和 CALLGRIND_STOP_INSTRUMENTATION 宏。我不希望该工具像 valgrind 通常那样降低应用程序的速度太多。但这并没有真正起作用,因为 Valgrind 似乎将所有内容序列化到一个线程。

例如,如果 fn A 调用 fb B,fb B 调用 fn C,然后返回到 B 和 A,我想知道在何处花费了多少时间。我有一些我正在使用的互斥工具,但是一个好的时间工具对于查看究竟在哪里花费了时间非常有用,这样我就可以专注于那些路径。除了自己添加一些东西之外,有什么工具可以用来完成这项任务吗?顺便说一句,它是一个 C++ 应用程序。我不能使用 valgrind,因为它在内核中是单线程的。此外,我的应用程序需要花费大量时间等待,因此普通的 CPU 分析器并没有真正起到多大作用。

最佳答案

您可能想看看 this post 的第 3 点.

它建议不要问时间花在了哪里,而是问为什么

假设您正在寻找某种“花费太多时间”的方法与询问(通过研究堆栈样本,而不是总结它们)程序在一小段时间内实际试图完成什么之间存在质的区别点数。

这种方法可以找到您可以通过测量方法找到的任何东西,甚至更多。如果重复应用,它会导致很大的加速因素。

在多线程的情况下,您可以识别出不空闲的线程,并将其应用于它们。

关于c++ - 配置文件花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10068591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com