我想知道是否有一种准确的方法来计算生成一定数量的自定义加密算法所需的周期数。似乎存在一些库,但在其中添加新算法似乎也很困难。
到目前为止,我已经读到计算包括运行数千次加密,计算加密的平均时间,并且通过了解处理器的时钟频率,可以计算每字节产生的周期数。我只是想知道这种计算有多好,因为处理器可能用于另一个程序等。
有人对我在更清洁的环境中进行此测量的方式有建议吗?还是有人知道有关方法本身的建议?
谢谢!
如果您需要准确的周期数,则必须采用算法,查找生成的代码,将其与要运行它的处理器的指令集进行比较,然后从那里计算出来。这是非常乏味且容易出错的(想想超线程(,当您更改处理器时,结果会发生变化。
但是,您通常不关心确切的周期数,而是对确定一种解决方案是否比另一种解决方案更快感兴趣。为此,您可以简单地使用系统时钟测量每次运行的速度。除非您在专用系统上运行,否则后台还会有其他作业干扰测量。如果你多次运行基准测试并平均,你应该能够排除大部分这些影响(除非你在一个真正过载的系统上运行(。另一件事是,如果时钟有点不准确,那么如果运行时间非常小时,你就无法准确测量它。要解决此问题,您可以多次运行解决方案。即,如果您预计运行时间为 1 毫秒,请运行 1000 次以获得大约 1 秒。
因此,为了获得最可靠的结果,您应该在后台进程尽可能少的系统(最好是在几个类似的系统上(多次运行代码(应该需要几秒钟(。