【发布时间】:2022-09-30 11:24:59
【问题描述】:
System.currentTimeMillis(); 是 Java 中的系统方法。
如果串行调用此方法,似乎没有性能问题。
但是如果你不断地同时调用这个方法,性能问题就会显式地出现。作为依赖于 OS 时钟源的本机方法。但是如何在 Java 中提高它的性能。固定速率的刷新时间毫秒策略不可用。
示例如下:
int parallism = 32;
for(int i=0;i< parallism ;i++){
new Thread(() -> {
for(;;){
// Focus here, how can i measure the logic efficiently
long begin = System.currentTimeMillis();
// Here may be the logic:
// Define empty block here means 0ms elapsed
long elapsed = (System.currentTimeMillis() - begin);
if(elapsed >= 5){
System.err.println(\"Elapsed: \"+elapsed+\" ms.\");
}
}
}).start();
}
Thread.sleep(Integer.MAX_VALUE); // Just avoid process exit
-
实例化 32 个线程会更受欢迎。
-
你想达到什么目的?
-
提供的代码不是您如何衡量
currentTimeMillis实际花费的时间。没有办法让它更快。使用您在此处实际尝试执行的操作来编辑问题。为什么会出现?没有通用的“只用这个代替”的答案,但是对于特定的用例,可能会有一个特定的答案。 -
我只想测量 Thread.run() 中定义的代码的运行时间。
-
你得到了什么?
标签: java performance time clock