java与C在整数累加的运算对比

java与C在整数累加的运算对比

先来没事,今天晚上突发奇想,在同样平台ubuntu14.04,同等运算负荷的情况下测试了一下C与java的性能。可是,最后的实验结果让我大吃一惊,在我的心里也慢慢再一次对詹姆斯.高斯林(java语言的作者)的敬意。实验本身很简单,各位看官也可以去做同样的实验。有了心得之后,不妨一起本着学习的心态,共同交流,共同成长。下面贴出测试代码:

C语言:

<span style="font-size:18px;"><strong>
int main()
{
	int number=0,i=0;
	for(i=0;i<=1000000000;i++)
		number++;
	return 0;
}</strong></span>

C语言的编译器是gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2。编译的程序a.out的运行时间用time测出,为real    0m3.153s, user    0m3.152s,  sys    0m0.000s

java语言:

<span style="font-size:18px;"><strong>
public class tst
{
	public static void main(String[] args)
	{
		int i;
		int number=0;
		long startTime = System.currentTimeMillis();//运行起止时间
		for(i=0;i<=1000000000;i++)
			number++;
		long endTime = System.currentTimeMillis();//运行终止时间
		float seconds = (endTime - startTime)/1000F;
		System.out.println(Float.toString(seconds) + " seconds.");
	}
}</strong></span>

java的编译器是javac 1.7.0_79,java虚拟机是java version "1.7.0_79",OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.04.2),OpenJDK Server VM (build 24.79-b02, mixed mode)。time测出的结果为:real  
 0m0.093s,user    0m0.088s,sys    0m0.008s(注:如果用java的函数测试的话(不考虑jvm的时间开销)运行时间为0.006 seconds.)

时间: 2024-10-29 09:21:27

java与C在整数累加的运算对比的相关文章

Java第二课:整数、浮点数

浮点数 带小数点的数.浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式.另一种方式叫做定点数,不过在Java中不会遇到定点数.人们借用浮点数这个词来表达所有带小数点的数. 当浮点数和整数放到一起运算时,Java会将整数转换成浮点数,然后进行浮点数的运算. 通常用double来表示浮点数的类型 浮点数计算是有误差的,当我们需要用精确的计算时,还是要用整数. 整数类型不能表达有小数部分的数.计算机里会有纯粹的整数这种奇怪的东西,是因为整数的运算比较快,而且占

Python 整数和浮点数运算

和数学运算不同的地方是,Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数:1 + 2 # ==> 整数 31.0 + 2.0 # ==> 浮点数 3.0 整数和浮点数混合运算的结果就变成浮点数了:1 + 2.0 # ==> 浮点数 3.0 为什么要区分整数运算和浮点数运算呢?这是因为整数运算的结果永远是精确的,而浮点数运算的结果不一定精确,因为计算机内存再大,也无法精确表示出无限循环小数,比如 0.1 换成二进制表示就是无限循环小数.

java访问控制权限和C++访问控制权限的对比

1.java修饰符权限 这里有一个包的概念,所谓同一个包是指*.java文件处于同一个文件夹下 2.C++修饰符权限 public:这是公有的成员,允许类外直接访问,当然,这要加上类作用域符::, protected:这是保护成员,只允许该类及其派生类访问 private:这是私有成员,只允许在该类中进行访问,当然,在类外只可以通过设定的公有函数进行访问. java访问控制权限和C++访问控制权限的对比

用Java的大整数类Integer来实现大整数的一些运算

import java.io.*; import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); BigInteger a, b; while(sc.hasNext()) { a = sc.nextBigInteger(); b = sc.nextBigInteger(); Syste

java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定

一. 计算机的小数计算一定范围内精确,超过范围只能取近似值: 计算机存储的浮点数受存储bit位数影响,只能保证一定范围内精准,超过bit范围的只能取近似值. java中各类型的精度范围参见:http://blog.csdn.net/longshenlmj/article/details/47616481 编程时注意: doulbe类型的数,不能用等号判定是否相等(或者是一定范围内可以).因为两次同样的计算(除法)结果可能出现小数部分不同.甚至极端的时候,初始化两个小数时,都可能不相等(用数值和字

超长整数的基础运算 算法实现之乘、除篇

笔算乘法: 对于m位和n位的输入.传统的乘法须要m*n次主要的乘法,也即算法复杂度为O().我们用纸和笔做乘法运算时,用乘数的每一位乘以被乘数的每一位并加上上一列的进位而产生一行适当移位的中间结果.然后再将各行中间结果相加即得到乘法的终于结果.比如10进制下计算189*34的步骤例如以下表: 笔算乘法的运算过程 本算法依照上述过程进行计算.但在计算机上最好是把内部的乘法和加法并行的运行.即计算每一行中间结果的同一时候将该行加到终于结果上.这样既可以省去不少步骤,也避免了中间结果的空间开销和内存管

java基础之float、double底层运算

目前java遵照IEEE制定的浮点数表示法来进行float,double运算.这种结构是一种科学计数法,用符号.指数和尾数来表示,底数定为2--即把一个浮点数表示为尾数乘以2的指数次方再添上符号. 我们来看一段java代码: public class FloatToBinary { public static void main(String[] args) { float f1=8.5f; System.out.println("f1底层数据(十进制):"+Float.floatTo

深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer12.html 前言 上一章我们简单介绍了IEEE浮点标准,本次我们主要讲解一下浮点运算舍入的问题,以及简单的介绍浮点数的运算. 之前我们已经提到过,有很多小数是二进制浮点数无法准确表示的,因此就难免会遇到舍入的问题.这一点其实在我们平时的计算当中会经常出现,就比如之前我们提到过的0.3,它就是无法用浮点小数准确表示的. 为此LZ专门写了一个小程序,使用Java语言打印出了0.3的二进制表示,

Java基础-一文搞懂位运算

在日常的Java开发中,位运算使用的不多,使用的更多的是算数运算(+.-.*./.%).关系运算(<.>.<=.>=.==.!=)和逻辑运算(&&.||.!),所以相对来说对位运算不是那么熟悉,本文将以Java的位运算来详细介绍下位运算及其应用. 1. 位运算起源 位运算起源于C语言的低级操作,Java的设计初衷是嵌入到电视机顶盒内,所以这种低级操作方式被保留下来.所谓的低级操作,是因为位运算的操作对象是二进制位,但是这种低级操作对计算机而言是非常简单直接,友好高效