java - 测量执行时间

标签 java execution-time

我想测量生成 DES key 所需的时间,并且我想多次计算它,以便找到平均值。

for (int x = 0; x < 10; x++)
{
     long startTime = System.currentTimeMillis();

     SecretKey key = KeyGenerator.getInstance("DES").generateKey();         

     long stopTime = System.currentTimeMillis();
     long elapsedTime = stopTime - startTime;
     System.out.println("Total Time Taken : " + elapsedTime);
}

但是结果是这样的

Total Time Taken : 251
Total Time Taken : 0
Total Time Taken : 0
Total Time Taken : 0
Total Time Taken : 0
Total Time Taken : 0
Total Time Taken : 0
Total Time Taken : 0
Total Time Taken : 0
Total Time Taken : 0

我尝试通过将关键对象设置为 null 然后调用 System.gc() 来处置它;但没有成功。

解决此问题的任何建议或想法。

最佳答案

增加你的计数。 currentTimeMillis() 分辨率能力受到硬件和操作系统功能的限制。特别是,它实际上无法解析到绝对精确的毫秒数。我发现它在 300 毫秒范围内并不准确。

如果您需要在小间隔内获得更好的精度,您可能还想尝试 System.nanoTime()。再次请注意,此函数的准确性将取决于操作系统。我相信上次尝试这个 Linux 会返回比 Windows 更准确的结果。可能仍然正确,也可能不正确。

关于java - 测量执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778534/

相关文章:

java - 如何分析 LAN 上运行的 Java 应用程序?

java - 如何记录 hibernate 中插入和更新查询的响应时间

java - 单击 Reddit 上的“下一步”按钮,而 Selenium 没有执行任何操作

java - 在 Groovy 中的集合上的 .findAll 闭包内进行赋值

javascript - if 语句的函数作用域

c++ - 执行时间为零的循环

c - 在 C 中限制程序的执行时间(蒙特卡罗技术)

JavaFX 字体大小从宽度

php - 如何修复 PHP 中的最大执行时间错误?

database - 使用我的 ORACLE 数据库请求提交每 200 个客户端的最佳方法是什么