`
px96004
  • 浏览: 4408 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

为啥都说JAVA这种解释执行的语言比C这种本地语言慢?而我的实验却恰恰相反?

阅读更多
看了很多技术网站。都会提到JAVA比C要慢。而且有的还会说会慢上一个数量级,什么解释执行啊,效率低啊~~~~~

今天闲来无事做了个实验,其实也简单 就是循环个 10000000000次,算下时间。结果,JAVA最快的。

代码如下:
先来个C版的:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
time_t t1 = time(NULL);
double k = 0;
for(int j=0;j<100;j++)
for (int i = 0; i < 100000000; i++) {
k += 3.1415926 * i*j;
}
time_t t2 = time(NULL);
printf("%ld\n", t2 - t1);
printf("%f\n",k);
system("pause");
}

再来个java版的

import java.io.IOException;
import java.util.Calendar;

public class test {

public test() {
timeStart = Calendar.getInstance();
double k = 0;
for (int j = 0; j < 100; j++) {
for (int i = 0; i < 100000000; i++) {
k += 3.1415926 * i * j;
}
}
timeEnd = Calendar.getInstance();
System.out.println(k);
System.out.println(timeEnd.getTimeInMillis()
- timeStart.getTimeInMillis());
}

public static void main(String[] args) throws IOException {
new test();
}

private Calendar timeStart;
private Calendar timeEnd;
}

其中C版的我用GCC编译器,编译执行,总共用了约70秒。
用JAVA版的,我的JAVA版本是1.6,编译执行,总共用了约51秒。

最搞笑的是 C版我用VC++6.0编译执行,居然用时140秒。
我的系统是XP,CPU是AMD KT-55 1.8G
后来我又写了个JS版 代码如下:

<html>
<head>
</head>
<body>
<script>
var k;
for(var j=0;j<100;j++)
for(var i = 0; i < 100000000; i++) {
k += 3.1415926 * i*j;
}
alert(k);
</script>
</body>

结果我用谷歌浏览器,等了4分钟也没出结果。放弃。



哪位大虾能帮我解释解释到底为啥~~~
在我看来C是肯定要比JAVA快的,可为啥结果却是JAVA最快?
无限疑惑中~~~~~
分享到:
评论
5 楼 solonote 2009-06-25  
楼主,请先搞清楚,Java就是用c语言写的
还有一点,语言执行一段代码的速度快慢并不是什么重要的东西,弄清楚这种语言适合做什么,不适合做什么才是有意义的事情.
Java在企业级应用中比c要好很多,但是c语言这种古老的过程语言任然在很多领域被使用.这绝对不是因为谁写一段代码比谁执行的快0.1秒的问题.
这种东西是无聊的
4 楼 lidong2001 2009-06-22  
i不是int型吗,怎么还能循环到100000000?
3 楼 yuantong 2009-06-10  
我也不是牛人,别人的评判标准可能是最佳编码上,或者说不单单以一个循环来衡量
2 楼 pangtao 2009-06-09  
我不是牛人,但是,这些对你有帮助
http://www.matrix.org.cn/thread.shtml?topicId=16092&forumId=18
1 楼 px96004 2009-05-20  
哪位牛人,前辈能给小弟我解释解释这到底为啥?

相关推荐

    C语言调用java语言方法

    这个过程在Android应用开发中尤其常见,因为Android的系统库和许多性能关键的组件都是用C/C++编写的,而JNI提供了与Java层交互的桥梁。 在"06.CCallJavaMethod"这个文件夹中,可能包含了一个关于这个主题的详细教程...

    什么是C语言?什么是VB语言?什么是VF语言?什么是JAVA语言?什么是C++语言?.pdf

    "什么是C语言?什么是VB语言?什么是VF语言?什么是JAVA语言?什么是C++语言?" 在计算机编程领域中,有多种编程语言,每种语言都有其特点和应用场景。今天,我们将讨论五种常见的编程语言:C语言、VB语言、VF语言...

    什么是C语言?什么是VB语言?什么是VF语言?什么是JAVA语言?什么是C语言?.pdf

    解释型语言(如VB)的源代码在运行时逐行转化为机器可执行的代码,而编译型语言(如C++)则在执行前将整个源代码编译为可执行文件,执行速度更快,但需要编译过程。 编程的难度取决于所使用的语言和应用场景,但...

    什么是C语言?什么是VB语言?什么是VF语言?什么是JAVA语言?什么是C语言? (2).pdf

    C语言是一种高级编程语言,由贝尔实验室的Dennis Ritchie在1972年开发,主要用于系统编程。它以其简洁、高效和灵活性而著名,被广泛用于操作系统、嵌入式系统和软件工具的开发。C语言提供了丰富的控制结构,包括流程...

    C转java工具

    C转Java工具通过解析C语言源代码,将其转换为Java语言的等价表达,从而实现了两者之间的桥梁。 该工具的基本工作原理是:首先,它会读取C源代码文件,然后对C语言的语法结构进行分析,包括变量声明、函数定义、循环...

    西北工业大学高级语言程序设计Java_UML实验报告-带代码和UML模型

    《西北工业大学高级语言程序设计Java_UML实验报告》是一份深度探讨Java编程语言与统一建模语言(UML)在实际编程项目中的应用的报告。这份报告旨在帮助学生理解和掌握这两种关键技术,并通过实践来提升软件开发能力...

    第1讲教案 java语言概述

    随着互联网的兴起,Java语言的设计目标进一步明确,它旨在提供一种面向对象而非面向过程的编程体验,同时具备跨平台能力,吸取C和C++的优点,去除潜在的安全隐患,如指针操作,并支持多线程执行。 Java语言的核心...

    一个使用ollama本地大语言模型api的Java程序

    一个使用ollama本地大语言模型api的Java程序一个使用ollama本地大语言模型api的Java程序一个使用ollama本地大语言模型api的Java程序一个使用ollama本地大语言模型api的Java程序一个使用ollama本地大语言模型api的...

    算法(java语言 和c语言实现)

    总的来说,掌握算法和数据结构是成为一名优秀程序员的基础,无论选择Java还是C语言,都需要深入理解和实践。通过不断练习和研究,你将能够更好地应对各种编程挑战,提升自己的编程能力。记住,理论知识与实际编程相...

    java 语言的简单介绍

    最后,Java 语言为 Internet 的分布式环境而设计,因为它处理 TC 等协议,使得 Java 程序可以在 Internet 上进行分布式计算。 Java 语言是一种简单易学、易用、健壮、跨平台、解释性和高性能的编程语言。它具有许多...

    使用Java实现语言解释器

    【使用Java实现语言解释器】章节探讨了如何利用Java编程语言构建一个语言解释器,这是一种比编译器更简化的方法,适用于快速开发和交互式环境。解释器直接执行源代码,而无需预先转换为机器码,这使得它在调试、脚本...

    Java语言程序设计教程(Java 7)——入门与提高篇01

    编译是将整个源代码一次性转换成机器代码的过程,而解释则是逐条转换源代码并立即执行的过程。 面向对象与面向过程是两种不同的编程范式。面向对象强调对象的概念,对象中既包含了数据也包含了处理数据的方法。程序...

    Java和C语言的对比.pdf

    而Java语言的编译机制则不同,它将源代码编译成字节码,然后由Java虚拟机(JVM)解释执行。在C语言中,编译器将源代码编译成机器码,然后直接在计算机上运行;而在Java语言中,编译器将源代码编译成字节码,然后由...

    Java语言面向对象程序设计实验指导与习题答案

    《Java语言面向对象程序设计实验指导与习题答案》是由范玫和马俊共同编著的一本面向初学者和进阶者的Java编程书籍。这本书旨在帮助读者深入理解Java语言的面向对象特性,并通过一系列的实验指导和习题解答,提升实践...

    自考04747《Java语言程序设计(一)》教材电子版

    - 编译和解释执行相结合的运行模式,将源代码编译为字节码后解释执行。 - 自动内存回收功能,垃圾收集器能自动回收不再使用的内存,无需程序员显式操作。 - 面向对象特性,包含封装性、继承性和多态性。 - 平台...

    计算机语言的发展简介,总的来说计算机语言可分成机器语言,汇编语言,高级语言三大类。

    高级语言如C、C++、Java、Python等,使用接近自然语言的语法,使得程序员能专注于问题解决而不是底层细节。高级语言编写的程序可移植性强,因为它们需要通过编译器或解释器转化为目标机器的机器语言。编译器将源代码...

    自考04747Java语言程序设计(一)电子档教材

    Java语言从C和C++发展而来,但是它更简单,摒弃了许多复杂的特性,特别适合初学者学习。它不仅具备面向对象编程的优势,还有丰富的类库支持,可以进行各种复杂度的软件开发。Java的跨平台性、面向对象的特性和安全...

    2-java语言实验(数据类型_运算符).docx

    Java语言实验(数据类型和运算符) 本实验涵盖了Java语言的基本概念,包括数据类型、运算符和表达式。实验中涉及到变量的命名规则、数据类型的分类、运算符的优先级和结合性、表达式的计算顺序等知识点。 一、变量...

    java 实现国际化 中英文语言切换

    Java 实现国际化是一种重要的软件开发技术,特别是在构建多语言支持的应用程序时。国际化(i18n)使得软件能够适应不同国家和地区的语言环境,包括中文和英文。在这个主题中,我们将深入探讨如何使用Java和JSP进行...

Global site tag (gtag.js) - Google Analytics