我想用遗传算法为gcc编写一堆优化。 我需要测量某些统计和拟合函数的汇编函数的执行时间。 不能使用通常的时间测量,因为它受缓存大小的影响 所以我需要一张桌子,我可以看到这样的东西。
command | operands | operands sizes | execution cycles
我想念一些事吗? 抱歉英语不好。
答案 0 :(得分:2)
对于现代CPU,没有简单的表来查找指令完成所需的时间(尽管某些旧处理器存在这样的表,例如486)。关于每条指令的作用以及可能需要多长时间的最佳信息来自芯片制造商。例如。 Intel's documentation manuals非常好(该页面上还有一个优化手册)。
在几乎所有现代CPU中,还有RDTSC
指令,用于将代码运行的处理器的时间戳计数器读入EDX:EAX
。这也存在陷阱,但基本上如果您分析的代码代表实际使用情况,它的执行不会被中断或转移到另一个CPU核心,那么您可以使用此指令来获得您想要的时间。即使用两条RDTSC
指令围绕要优化的代码,并将TSC中的差异作为时序。 (不同测试/情况下的时间差异可能很大;统计数据是你的朋友。)
答案 1 :(得分:1)
答案 2 :(得分:1)