代码都在同一个window操作系统的机器上运行,分别取Eclipse中运行的Java、谷歌浏览器中运行的JavaScript、Nodejs中运行的JavaScript的结果进行对比。
其中,Jdk版本为1.8.0_181(64位),JavaScript运行环境为Google Chrome72.0.3626.119(64位),Nodejs版本为10.4.1(64位)。
超大规模运算(万亿级)
Java代码
JS基础语法和JAVA比较
JavaScript代码
运行结果
考虑到寄存器缓存对性能的影响,每个方法都执行6次并去除第一次运行时间后取平均值。Java输出5711ms;JavaScript浏览器输出14705ms;Nodejs环境输出14492ms
第一次运行时间对比,Java输出8230ms;Js浏览器输出19110ms;Nodejs环境输出17387ms。
小规模运算(百万级以内)
Java代码
在测试中,特意做了这样一个结果记录:如果Java程序在运算时出现类型转换,运算效率将会大幅下降,如下calc3()方法和calc2()几乎相同,除了将for循环中的i和j的声明类型换成int,这将引起整数向浮点数的运行时转换:
JavaScript代码
运行结果
考虑到寄存器缓存对性能的影响,每个方法都执行6次并去除第一次运行时间后取平均值。Java中calc2()输出2.52ms,calc3()输出3.7ms;JavaScript浏览器输出2.6ms;Nodejs环境输出2.4ms。
第一次运行时间对比,Java中calc2()输出6.8ms,calc3()输出8.6ms;JavaScript浏览器输出14ms;Nodejs环境输出13ms。
结论
观察发现:
1.在超大规模计算时,Java运行时间明显低于JavaScript;
2.在小规模运算时,Java运行时间和JavaScript运行时间相差不大;
3.Nodejs的运行时间略快于浏览器环境;
4.不论Java或者Javascript,多次执行的代码优化都是非常明显的;
5.Java作为强类型语言,在编程时要确保不出现运行时类型转换,否则性能将大大降低;
6.从程序输出发现,Java每次执行时间跳动较大(有可能已经是第四次执行了,执行时间却接近第一次执行时间)。而Nodejs每次执行时间是最稳定的,除了第一次执行时间较长,之后每次执行时间几乎不变;
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/26316.html