题
我目前正在衡量某些代码在失败中的性能。该代码提供了一些这样的算术否定指令:
d = -a
在哪里 d
和 a
是浮点变量。 我目前使用的体系结构确实具有特定的否定说明。 我是否应该考虑这种操作来测量拖鞋?什么样的操作说明了失败?有会议还是什么?
解决方案
正如@andrey所说,要确保您应该检查拆卸的代码。
但总的来说,是的,该指令可能会在FPU上执行。它只是翻转一点,所以 可以 也可以在整数单元上完成,但是由于您在浮点值上进行操作,因此很可能已经将其加载到FP寄存器中,因此将其移动到通用寄存器,翻转会有相当多的开销钻头并将它们移回去。
我不知道是否有完整的通用指南“应该算作flop”,但这很可能是在FPU上执行的指令,因此它正在与CPU上的其他FP指令竞争,所以是的,我会将其包括在拖鞋中。
其他提示
尝试拆卸代码并检查如何执行此操作。
如果使用指令 FCHS
(更改标志)然后您可以考虑其浮点操作。
MSVC(Visual Studio 2008)
double c = -b;
00971397 fld qword ptr [b]
0097139A fchs
0097139C fstp qword ptr [c]
FCHS-看到吗?
有一种约定可以使用Linpack作为标准基准来计算拖船。
不隶属于 StackOverflow