自定义算法所需的基准周期/字节

时间:2016-02-01 08:03:47

标签: algorithm benchmarking

我想知道是否有一种准确的方法来计算生成自定义加密算法的一定量字节所需的周期数。似乎存在一些库,但似乎很难在其中添加新算法。

到目前为止,我已经读过计算包括运行数千次加密,计算加密的平均时间,并且通过了解处理器的时钟频率,可以计算每个字节产生的周期数。我只是想知道这个计算有多好,因为处理器可能用于其他程序等等。

是否有人建议我尽可能在更清洁的环境中执行此测量?或者有人知道关于方法本身的建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您需要准确的周期数,则必须采用算法,查找生成的代码,将其与您要运行的处理器的指令集进行比较,然后从那里进行计算。这非常繁琐且容易出错(想想超线程),当您更改处理器时结果会发生变化。

但是,您通常不关心确切的周期数,而是有兴趣决定一个解决方案是否比另一个解决方案更快。要做到这一点,您可以使用系统时钟测量每次运行的速度。除非您在专用系统上运行,否则后台将有其他工作干扰测量。如果您多次运行基准测试并且平均值,那么您应该能够排除大部分这些影响(除非您在一个真正超载的系统上运行)。另一件事是,如果时钟有点不准确,那么如果运行时非常小,则无法准确测量它。要解决此问题,您可以多次运行该解决方案。即如果您预计运行时间为1ms,则运行1000次以获得大约1秒。

因此,对于最可靠的结果,您应该在具有尽可能少的后台进程的系统上多次运行代码(应该花费几秒钟)(理想情况下在几个类似的系统上)。