gpt4 book ai didi

c++ - 测量将参数传递给函数所需的时间

转载 作者:行者123 更新时间:2023-11-28 05:10:33 26 4
gpt4 key购买 nike

有没有办法通过传递参数来衡量函数花费了多少时间?我的想法是衡量函数的主体和整个函数本身。这是正确的做法吗? 伪代码如下:

int main(){
int start = time.now();
// passing by value
int timeOfFunc = foo(vector<my_object> huge_vector, vector<my_object2> huge_vector2);
int end = time.now();
int timeSpentPassingArgs = (end - start) - timeOfFunc; // getting time it takes to pass the argument?
}

int foo(vector<my_object> huge_vector, vector<my_object2> huge_vector2)
{
int start = time.now();
// body of the foo function
int end = time.now();
return (end - start);
}

最佳答案

首先,我建议打印调用函数的汇编语言。这应该让您了解传递变量所需的工作。

为了获得有意义的配置文件,您应该测量函数调用之前的时间和之后的时间,并执行超过 1E6 次迭代。然后,您可以获得调用函数所需的平均执行时间。

另一种方法是查找函数调用中使用的每条汇编指令所需的时钟周期。由于处理器执行汇编语言指令的方式(它可能并行执行,代码可能在也可能不在指令缓存中等),这可能不准确。

编辑 1:示波器
测量性能的一个好工具是示波器。在嵌入式系统区域,代码写入测试点(或 LED)。例如,LED 将在函数调用之前打开并在函数调用之后关闭。示波器探头将连接到 LED。然后可以使用示波器测量 LED 亮起的持续时间。同样,需要执行许多迭代才能获得更好的平均值。

关于c++ - 测量将参数传递给函数所需的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43594627/

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