我知道这个理论,但在实际实施方面存在问题。我在C中写了一个AES算法。现在,我想知道它“拥有”每个字节有多少个周期。我知道我必须(是100%严格吗?):
是否可以在C / C ++中完成?如何制作它以及我应该使用/寻找什么呢?
我对Linux / Windows / Mac解决方案感兴趣。
答案 0 :(得分:1)
这只是代数,而不是方程式或理论。
如果您已经知道字节/秒和时钟速度(周期/秒),那么
(bytes/second) / (cycles/second) => bytes/cycle
1 / (bytes/cycle) => cycles/byte
如果您不知道每秒字节数,可以通过以下方式计算:
请注意,如果上面的“timestamp”实际上是一个循环计数器,则可以跳过循环/第二阶段。否则,您可以从平台的系统/硬件信息工具中读取CPU频率。
对于POSIX,合理的计时器可能是clock_gettime(CLOCK_THREAD_CPUTIME_ID,...)
。您应该能够通过搜索找到rdtsc
的示例代码,最佳Windows计时功能的文档等。
至于实际进行测量,评论中有很好的建议。你需要: