我的目标是:我想测试一段代码(或函数)的性能,就像我在单元测试中测试该函数的正确性一样,让我说输出这个基准测试过程是一个“功能性能指标”,它是“便携式的”
我的问题是:我们通常使用计时器对代码进行基准测试,以计算执行该代码期间的已用时间。并且该方法取决于硬件或操作系统或其他东西。
我的问题是:是否有一种方法可以获得独立于主机性能的“功能性能指标”(CPU / OS /等等),或者如果不是“独立的” “让我们说它与一些固定价值”相对“。所以“功能性能指标”的价值在任何平台或硬件性能上仍然有效。
例如:FPI值可以在
中测量注意,FPI值不需要在科学上正确,准确或准确,我只需要一个值来粗略概述该功能性能与其他功能相比用相同的方法测试。
答案 0 :(得分:5)
我认为你在这里寻找不可能的东西,因为现代计算机的性能是CPU,缓存,内存控制器,内存等的复杂混合。
因此,一个(假设的)计算机系统可能会奖励使用巨大的查找表来简化算法,因此处理的cpu指令非常少。虽然另一个系统的内存相对于CPU内核可能要慢得多,但是一个执行大量处理但触及很少内存的算法会受到青睐。
因此,对于这两种算法,单个“品质因数”甚至无法表达哪种算法在所有系统中都更好,更不用说它更好了。
答案 1 :(得分:1)
不,没有这样的事情。不同的硬件执行不同。你可以有两个不同的代码X和Y,这样硬件A的运行速度比Y快,但硬件B的运行速度比X快。没有绝对的性能等级,它完全取决于硬件(更不用说其他东西了)操作系统和其他环境因素。)
答案 2 :(得分:1)
你真正需要的是一个像 tcov 一样的工具。
man tcov 说:
每个基本代码块(或每个 如果指定了tcov的-a选项,则为行前缀 它被执行的次数;有的线 未执行的前缀为“#####”。基本块 是一个没有分支的连续代码段:每个 基本块中的语句执行相同的数量 次。
答案 3 :(得分:0)
听起来你想要的是一个计算一段代码的Big-O Notation的程序。我不知道是否可以自动化方式(暂停问题等)。
答案 4 :(得分:0)
正如其他人所说,这不是一项微不足道的任务,可能无法从中得到任何准确的结果。考虑一些方法: