|
|
1
5
首先回答第二部分,您的代码似乎是Java微基准的经典错误,而不是在进行测量之前“热身”JVM。您的应用程序需要运行进行测试的方法几次,忽略前几次迭代…至少在数字稳定之前。这是因为JVM必须做大量工作才能启动应用程序;例如,加载类和(当它们运行了几次)JIT编译花费大量应用程序时间的方法。 我认为“-server”之所以与众不同是因为它改变了决定何时进行JIT编译的规则。假设对于一个“服务器”,最好更快地进行JIT,这样可以使启动速度变慢,但吞吐量更好。(相比之下,“客户机”被调到延迟JIT编译,以便用户更快地获得一个工作的GUI。) |
|
|
2
1
imho性能惩罚来自于类加载机制。 在反射的情况下,所有的安全机制都被使用,因此创造惩罚更高。 对于新的操作符,类已经加载到vm中(由默认的类加载器检查和准备),实际的实例化是一个便宜的过程。 -server参数对常用代码进行了大量的JIT优化。您可能还希望使用-batch参数来尝试它,该参数会抵消启动时间,但代码运行速度会更快。 |
|
|
3
1
除其他外,还包括
仔细阅读,我发现你的例子是
micro-benchmark
结果可能与直觉相反。例如,在我的平台上,重复调用
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |