如何计算在Java中执行一个方法所花费的时间?


当前回答

事实上,Nanotime甚至不适用于流逝时间,因为它比currentTimeMillis漂移得更厉害。此外,纳米时间往往以牺牲准确性为代价来提供过高的精度。因此,它是高度不一致的,需要改进。

对于任何时间测量过程,currentTimeMillis(尽管几乎同样糟糕)在平衡精度和精度方面做得更好。

其他回答

更准确地说,我将使用nanoTime()方法而不是currentTimeMillis():

long startTime = System.nanoTime();
myCall(); 
long stopTime = System.nanoTime();
System.out.println(stopTime - startTime);

在Java 8中(输出格式为ISO-8601):

Instant start = Instant.now();
Thread.sleep(63553);
Instant end = Instant.now();
System.out.println(Duration.between(start, end)); // prints PT1M3.553S

番石榴秒表:

Stopwatch stopwatch = Stopwatch.createStarted();
myCall();
stopwatch.stop(); // optional
System.out.println("Time elapsed: "+ stopwatch.elapsed(TimeUnit.MILLISECONDS));

检查这个:System.currentTimeMillis。

你可以这样计算你的方法的时间:

long start = System.currentTimeMillis();
class.method();
long time = System.currentTimeMillis() - start;

您可能需要考虑面向方面的编程。你不希望你的代码中充斥着时间。您希望能够以声明的方式关闭和打开它们。

如果你使用Spring,看看他们的MethodInterceptor类。

如果你为Android开发应用程序,你应该尝试TimingLogger类。 看看这些描述TimingLogger助手类用法的文章:

在Android SDK中测量性能(27.09.2010) 发现Android API -第一部分(03.01.2017)

事实上,Nanotime甚至不适用于流逝时间,因为它比currentTimeMillis漂移得更厉害。此外,纳米时间往往以牺牲准确性为代价来提供过高的精度。因此,它是高度不一致的,需要改进。

对于任何时间测量过程,currentTimeMillis(尽管几乎同样糟糕)在平衡精度和精度方面做得更好。