gpt4 book ai didi

Java 基准测试 - 为什么第二个循环更快?

转载 作者:IT老高 更新时间:2023-10-28 20:32:17 27 4
gpt4 key购买 nike

我很好奇这个。

我想检查哪个函数更快,所以我创建了一些代码并执行了很多次。

public static void main(String[] args) {

long ts;
String c = "sgfrt34tdfg34";

ts = System.currentTimeMillis();
for (int k = 0; k < 10000000; k++) {
c.getBytes();
}
System.out.println("t1->" + (System.currentTimeMillis() - ts));

ts = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
Bytes.toBytes(c);
}
System.out.println("t2->" + (System.currentTimeMillis() - ts));

}

“第二个”循环更快,所以,我认为 hadoop 中的 Bytes 类比 String 类中的函数快。然后,我改变了循环的顺序,然后 c.getBytes() 变得更快了。我执行了很多次,我的结论是,我不知道为什么,但是在第一个代码执行后我的 VM 中发生了一些事情,因此第二个循环的结果变得更快。

最佳答案

这是一个经典的 java 基准测试问题。 Hotspot/JIT/etc 会在你使用的时候编译你的代码,所以它在运行过程中会变得更快。

首先在循环中运行至少 3000 次(在服务器或 64 位上运行 10000 次) - 然后进行测量。

关于Java 基准测试 - 为什么第二个循环更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20655963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com