当前位置: 首页 > 面试题库 >

执行一个循环需要多少时间?

梁渊
2023-03-14
问题内容

有没有办法知道在Java中执行一个循环要花多少秒?

例如:

for(int i=0; i < 1000000; i++) {

//Do some difficult task goes in here

}

它不必精确到100%,而只是想知道要花费多长时间。里面的算法是一种写入.txt文件的密钥生成器。我希望它花费几分钟,因此对于我的第一次测试,我想计算秒数。


问题答案:

用Java编写微基准测试时需要非常小心。例如:

如果JIT编译器可以弄清楚循环体不影响代码结果,则可以对其进行优化。例如:

for (int i = 0; i < 1000000; i++) {
   int j = i + 1;
}

可能很快就会“运行”。

JIT编译后,代码的运行速度大大提高。

在进行JIT编译时,代码运行似乎会慢很多。

如果代码分配了对象,则由于GC运行,初始或最大堆大小太小等原因,您需要考虑测量性能的潜在可变性。

当然,性能将取决于您的硬件,操作系统,JVM的版本和补丁html" target="_blank">程序级别以及JVM启动选项。



 类似资料:
  • 问题内容: 如果… 为此操作: 这是做1个循环(重复x次)吗? 为此: 这是做2个循环(重复x次)吗? 其中x是结果数 编辑: 好,谢谢大家,好吧,我基本上非常,非常糟糕地回答了这个问题。 回想起来,应该是 “ mysql_fetch_array()每次调用仅返回一行吗?” 我现在很高兴我对mysql_fetch_array()的理解是不正确的! 谢谢你的时间! 问题答案: 我假设mysql_fe

  • 问题内容: 我有以下声明: 我需要为role_id 101-355生成一行(因此,与上述相同的语句,除了随着role_id递增而重复)。最好的方法是什么?为了完成这项工作,我打算编写一个快速的C#应用​​程序,该应用程序将有一个循环,但是我确信这不是最好的方法,希望在这里学习一些东西,以免将来不得不这样做(因为我确保这种情况很常见)。 问题答案: 您应该使用数字表,如果没有数字表,可以这样使用:

  • 我必须通过传递header和body来发出HTTP POST请求。在正文中,我需要在发布数据之前提供,所以我最初以“1”开头。之后,我将发布数据,并返回JSON响应,如下所示。 现在,根据的响应,我将决定还需要进行多少次调用。现在在上面的响应中,是3,所以我需要对同一个URL总共进行三次调用。由于我们已经进行了1个调用,我将再进行2个调用,在主体中使用“2”和“3”。 下面是我的工作代码。我只需要

  • 我知道无符号long-long存储在eax/edx中,但我想知道如何找出执行单个rdtsc指令所需的时钟周期? 编辑:像这样的东西有用吗? .GlobalRDTSC rdtsc: rdtsc rdtsc ret

  • 问题内容: 我正在尝试测试Java中自动装箱和拆箱的速度,但是当我尝试将其与基元上的空循环进行比较时,我注意到了一件奇怪的事情。此代码段: 每次运行此命令,它都会返回相同的结果: 为什么前两个循环总是要花一些时间,而其余的似乎只是被系统跳过了? 在这篇文章的答案中,据说即时编译将能够对此进行优化。但是,如果是这样,为什么前两个循环仍然需要一些时间? 问题答案: 在多次执行某段代码后,JIT会触发。

  • 我正在尝试使用一个do while循环来找出用户是想将一只狗还是一只猫检查到Java的养狗系统中。其思想是,当提示时输入“dog”或“cat”,任何输入都将导致错误,并且他们将再次被提示输入文件名。 如果输入了“cat”或“dog”,那么将为程序分配等效的文件(dogs.txt或cats.txt),然后系统将运行并将数据加载到程序中。 以下是当前的变量: 以及导致问题的方法: 下面是运行代码时打印