我正在寻找在多核处理器上执行微基准测试的方法。
语境:
几乎与此同时,桌面处理器引入了让性能难以预测的乱序执行,也许并非巧合,它们还引入了特殊指令来获得非常精确的时序。这些指令的示例rdtsc
在 x86 和rftb
PowerPC 上。这些指令给出的时间比系统调用所允许的更精确,允许程序员对他们的心进行微基准测试,无论好坏。
在具有多个内核的更现代的处理器上,其中一些内核有时会休眠,计数器在内核之间不同步。我们被告知rdtsc
不再安全地用于基准测试,但是当我们被解释替代解决方案时,我一定是在打瞌睡。
问题:
一些系统可能会保存和恢复性能计数器,并提供 API 调用来读取正确的总和。如果您知道此调用适用于任何操作系统,请在答复中告知我们。
一些系统可能允许关闭核心,只留下一个运行。我知道 Mac OS X Leopard 在从开发人员工具安装正确的首选项窗格时会这样做。你认为这可以rdtsc
安全地再次使用吗?
更多背景:
请假设我在尝试进行微基准测试时知道自己在做什么。如果您认为如果优化的收益不能通过计时整个应用程序来衡量,那么不值得优化,我同意您的观点,但是
在替代数据结构完成之前,我无法为整个应用程序计时,这需要很长时间。事实上,如果微基准没有希望,我现在可以决定放弃实施;
我需要在我无法控制截止日期的出版物中提供数据。