【发布时间】:2019-12-11 04:00:30
【问题描述】:
在我当前的项目中,部分代码需要 30 多分钟才能完成该过程。我发现时钟函数是获取方法执行时间的最佳选择,但是有没有其他方法可以获得代码行的最长时间?否则我必须用时钟功能记录每个方法,这对我来说将是一个复杂的过程,因为这确实是一个巨大的项目,需要永远完成。
【问题讨论】:
-
但是有没有其他方法可以获得代码行的最大耗时? -- 是的,它被称为 profiler。
-
欢迎来到 Stackoverflow。您正在寻找的内容称为“分析”。有很多关于它的信息。你可以从这里开始:stackoverflow.com/questions/2624667/…
-
对于初学者,VS 调试器会显示每条语句的每步毫秒数。
-
我用过(你应该学习如何使用)std::chrono。但我最喜欢的函数(用于测量持续时间)是 posix 函数,“int status = clock_gettime(CLOCK_REALTIME, &ts);”它访问系统范围的实时时钟。 “struct timespec ts”具有纳秒级的因子。您将测量 3 个位置...开始、近似中间、结束,将代码分成 2 部分。你的慢功能应该在第一部分或第二部分。移动你的测量点,然后重复。是的,你可以测量很多持续时间并放在一个向量中。
-
我尝试运行 vtunes 放大器工具,但它似乎只适用于 .exe。我有一个工具可以运行将数据上传到数据库表和 xx.dll(这是我必须改进的 dll性能)在我运行该工具时被调用。我在完成瓶颈后检查了分析状态,它显示了函数地址而不是函数名称,甚至该函数属于工具而不是 xx.dll 乐趣。是否有支持 dll 分析的工具,因为当前 dll 依赖于 windows 服务。我对分析真的很陌生,所以我不知道如何处理这种情况。
标签: c++ visual-c++ performance-testing stopwatch