今天一同事说到java的运行效率是js的10倍。吾深感好奇,差这么多吗?遂写个小程序试一下,程序只是循环加1,但是在运行过程中会有执行时间大大增加的时候出现,无论java或是js都是这样。搞不清究竟是什么原因,请高人指点。
先贴上本机配置。
Intel(R) Core(TM)2 Quard CPU
Q8400 @ 2.66GHz
2.66 GHz , 1.98 GB 的内存。
Java版本
E:\Workspace\java\test>java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
浏览器使用了chrome12和chrome8的两个版本。
先上代码。
<input type="button" value="click" onclick="test() ;">
<br>
<div id="testDiv"></div>
<script type="text/javascript">
var i=0,j=0,k=0;
var resultStr = null ;
var beginTime = 0 ;
var endTime = 0 ;
var interval = 0 ;
var testDiv = document.getElementById("testDiv") ;
function test(){
for(i=0;i<1000;i++){
beginTime = new Date().getTime() ;
for(j=0;j<100000;j++){
k++
}
endTime = new Date().getTime() ;
interval = endTime - beginTime ;
resultStr = "cost " + interval + " milliseconds" ;
testDiv.innerHTML = testDiv.innerHTML + resultStr + "<br>" ;
}
}
</script>
然后是Java代码。
public class Test {
public static void main(String[] args) {
int i=0,j=0,k=0;
long beginTime=0,endTime=0,interval=0 ;
StringBuilder result = new StringBuilder() ;
for(i=0;i<1000;i++){
beginTime = System.currentTimeMillis() ;
for(j=0;j<1000000;j++){
k++ ;
}
endTime = System.currentTimeMillis() ;
interval = endTime - beginTime ;
result.append("cost ") ;
result.append(interval) ;
result.append(" milliseconds") ;
System.out.println(result.toString()) ;
result.delete(0,result.length()) ;
}
}
}
然后是执行结果,先是java的:
cost 0 milliseconds
cost 0 milliseconds
cost 16 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 15 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 16 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
js的执行结果:
chrome12的执行结果
cost 14 milliseconds
cost 14 milliseconds
cost 14 milliseconds
cost 10 milliseconds
cost 4 milliseconds
cost 3 milliseconds
cost 3 milliseconds
cost 4 milliseconds
cost 4 milliseconds
cost 3 milliseconds
cost 4 milliseconds
cost 3 milliseconds
cost 3 milliseconds
cost 4 milliseconds
chrome8的执行结果
cost 15 milliseconds
cost 15 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 16 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 15 milliseconds
cost 16 milliseconds
cost 0 milliseconds
cost 15 milliseconds
cost 0 milliseconds
cost 16 milliseconds
cost 0 milliseconds
cost 0 milliseconds
cost 0 milliseconds
问题:为什么java和chrome8在运行过程中会有计算时间突然加长的时候?
坐等高人。
分享到:
相关推荐
C语言是一种广泛使用的计算机编程...通过这些示例,可以看到C语言中循环结构的多样化使用,以及它们在解决各种问题时的强大能力。掌握循环结构对于编程人员来说至关重要,因为循环是实现程序逻辑重复执行的基础工具。
例如,在VBScript(Visual Basic Script)中,我们可能会看到如下简单的死循环示例: ```vbscript Do While True ' 这里没有执行任何可以改变循环条件的语句 Loop ``` 在这个例子中,`Do While True` 创建了一个...
在IT行业的算法领域,计算整形数组中第k小的数是一个经典的编程问题,它涉及到排序、查找等基础知识,是衡量一个程序员基本功的重要指标之一。本文将深入解析这一知识点,包括其背后的算法原理、实现方法以及优化...
首先,我们看到7.6题涉及到的是杨辉三角形(Pascal's Triangle)的计算与显示。杨辉三角形是二项式系数的一种图形表示,每一行的第i个数是上一行前i个数的和。课件中给出了用C语言实现的代码,通过二维数组yh存储...
通过以上分析,我们可以看到,循环赛日程表问题的解决依赖于分治递归策略,它将大问题分解为小问题,并通过递归的方式逐一解决。在实际编程中,我们还需要考虑如何有效地存储和处理这些信息,以生成最终的赛程表。这...
最小费用最大流问题是在网络流问题中的一个重要分支,它不仅要求找到一个从源点到汇点的最大流,而且还要求这个流的总费用最低。这类问题在物流配送、任务调度等多个领域有着广泛的应用。 #### 二、最小费用最大流...
在这个名为"数学计算工具程序设计"的项目中,我们看到使用C语言来实现这些功能。C语言是一种底层、高效的编程语言,特别适合编写这样的计算密集型程序。 首先,让我们详细讨论阶乘计算。阶乘是一个正整数n的所有...
汉诺塔问题是一个经典的递归算法示例,在这个问题中,我们需要移动n个盘子从A柱到C柱,限制条件是只能在三个柱子之间移动盘子,并且任何时候都不能将大盘子放在小盘子上面。这个问题可以使用递归算法来解决。 递归...
在JDK 1.8版本中,`ConcurrentHashMap`中的`computeIfAbsent`方法存在一个潜在的死循环问题。这个bug主要出现在并发操作时,当`ConcurrentHashMap`需要进行扩容并且`computeIfAbsent`正在执行计算的过程中,可能会...
在这个PPT学习教案中,我们看到了几个与计算机编程相关的问题,这些问题旨在帮助学习者更好地理解和应用计算机知识。 首先,我们看到一个与“杨辉三角形”(Pascal's Triangle)相关的问题。杨辉三角形是一种二维...
在TSP问题中,连续型Hopfield网络通过模拟神经元间的相互作用来寻找最佳路径。 3. **Matlab实现**: - 使用`dist`函数计算城市间距离。 - 设定迭代参数,并通过循环迭代更新神经元状态,以逐步逼近最优解。 - ...
在实际应用中,这种思维方式对于解决日常生活中的问题也十分有益。通过这样的游戏,孩子们可以在娱乐中学习,提高对数学的兴趣,同时培养他们的计算速度和准确性。 VB源码是游戏的核心部分,初学者可以通过阅读和...
在编程中,最大公约数的计算尤其重要,因为它可以作为算法优化的手段,例如在约分分数、计算同余方程、优化组合数学中的多项式等问题中发挥作用。而最小公倍数则常用于求解周期性问题或找到两个数的公共周期。 在...
- 第12题要求设计一个搜索及格成绩的算法,体现了循环结构在解决实际问题中的应用。 - 第13题的国际象棋棋盘麦粒问题,是一个经典的指数增长问题,可通过循环结构计算出总麦粒数,展示了指数增长的威力。 通过...
在这个问题中,我们可以看到问题具有最优子结构的特性,即当前问题的最优解可以通过其子问题的最优解来构造。例如,从第1站到第3站的最短路径可以通过找到第1站到第2站以及第2站到第3站的最短路径来确定。 实验内容...
通过解决实际问题,实验旨在帮助学生深入理解循环在编程中的应用。 1. **计算圆周率π的近似值**: 使用`for`循环,按照给定的公式`π=2×(1/1 - 1/3 + 1/5 - 1/7 + ...)`计算π的近似值。循环1000次,每次迭代...
在c++中,我们可以通过编写递归或循环结构,将区间分成若干个子区间,分别用辛普森公式计算每个子区间的积分,最后将结果累加得到总积分。 3. 列主元消元法(Gauss-Elimination with Partial Pivoting): 这是一...
- 题目中给出了多个程序段,包括计算序列和、判断循环体执行次数、转换循环类型等,这些例子展示了循环语句在实际问题中的应用。 通过以上讨论,我们可以看到,循环语句是高中数学和计算机科学中的关键概念,不仅...
从文件内容中,我们可以看到计算方法相关的知识点,例如数值分析、线性代数、优化算法等。 6. 数据结构:数据结构是计算机科学中的一种基本概念,指的是数据的组织和存储方式。从文件内容中,我们可以看到数据结构...
在理财问题中,我们可以看到循环的三要素如何体现在算法设计中。首先,设定本金(A)、年利率(R)、存款时间(T)等初始状态;接着,定义每个循环周期的计算步骤,如每年本利和的更新(Pn = P(n-1) * (1 + R * 80%)...