- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个小型游戏项目,想要跟踪时间以处理物理。在浏览了不同的方法之后,起初我决定使用 Java 的 Instant
和 Duration
类,现在切换到 Guava 的 Stopwatch
实现,但是,在我的代码片段中,这两种方法在 runtime.elapsed()
的第二次调用处都有很大的差距。从长远来看,这似乎不是一个大问题,但为什么会发生这种情况呢?
我尝试在 Windows 和 Linux (Ubuntu 18.04) 中以焦点和线程的方式运行下面的代码,结果保持不变 - 确切的值不同,但存在差距。我使用的是 IntelliJ IDEA 环境和 JDK 11。
主要片段:
public static void main(String[] args) {
MassObject[] planets = {
new Spaceship(10, 0, 6378000)
};
planets[0].run();
}
这是我的类的一部分MassObject extends Thread
:
public void run() {
// I am using StringBuilder to eliminate flushing delays.
StringBuilder output = new StringBuilder();
Stopwatch runtime = Stopwatch.createStarted();
// massObjectList = static List<MassObject>;
for (MassObject b : massObjectList) {
if(b!=this) calculateGravity(this, b);
}
for (int i = 0; i < 10; i++) {
output.append(runtime.elapsed().getNano()).append("\n");
}
System.out.println(output);
}
标准输出:
30700
1807000
1808900
1811600
1812400
1813300
1830200
1833200
1834500
1835500
感谢您的帮助。
最佳答案
您正在调用 Duration.getNano()
在 elapsed()
返回的 Duration
上,这不是您想要的。
Duration
的内部表示是秒数加上一个纳米偏移,用于表示整秒中的任何附加分数持续时间。 Duration.getNano()
返回纳米偏移量,并且几乎永远不应该被调用,除非您还调用 Duration.getSeconds()
。
您可能想要调用的方法是 toNanos()
,它将整个持续时间转换为纳秒数。
编辑:在这种情况下,这并不能解释您所看到的内容,因为确实显示正在打印的纳米偏移可能都在同一秒内,但您仍然可以这样做不应该使用 getNano()
。
实际问题可能是在第一次调用期间必须发生的类加载或额外工作的某种组合,和/或 JIT 提高了 future 调用的性能(尽管我不认为循环 10 次就足够了)看到 JIT 带来的大部分变化)。
关于java - 为什么特定的 Guava Stopwatch.elapsed() 调用比其他调用晚得多? (后期输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55942742/
总结 我需要在 Camel 服务器 in-modify-out 过程中构建一组统计数据,并将这些统计数据作为一个对象(单个 json 日志行)发出。这些统计数据需要包括: input file met
某个元素使用以下 CSS 功能产生了惊人的结果: 盒子阴影;边界半径;边框和背景上的 RGBA 颜色。 问题是前两个需要延迟 Firefox/Chrome/Safari 浏览器,第二个不兼容 IE8
在我的 Rails 应用程序中有这段代码: window.onload = -> $("#mycontainer").typewriter() $("#div1").fadeIn("slow"
我想检查我的 api 是否工作正常。我有一个只有 post 请求而没有 GET 的 api。 教程在这里:https://learn.microsoft.com/en-us/azure/applica
我想检查我的 api 是否工作正常。我有一个只有 post 请求而没有 GET 的 api。 教程在这里:https://learn.microsoft.com/en-us/azure/applica
我是一名优秀的程序员,十分优秀!