「java的效率对比」java 效率

博主:adminadmin 2022-12-28 20:48:10 82

本篇文章给大家谈谈java的效率对比,以及java 效率对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java语言自身的运行效率和java本机运行效率的比较

你说的没错,java是更高级更便捷,但这种优秀性却正好带来了一个缺点,即它的执行效率相对低级语言要低

也许你可以说越高级的语言,它的执行效率越低(个人认为)。但这种效率差相对现在的硬件水平而言,已经不再是个问题了

现在的编程更看重的是敏捷开发和高效开发,而java正把这点发挥的很好

Java List遍历方法及其效率对比

Java代码

package zbalpha test;

import java util ArrayList;

import java util Iterator;

import java util List;

public class ListTest {

    public static void main(String args[]){

        ListLong lists = new ArrayListLong();

        for(Long i= l;i l;i++){

            lists add(i);

        }

        Long oneOk = oneMethod(lists);

        Long oOk = oMethod(lists);

        Long threeOk = threeMethod(lists);

        Long fourOk = fourMethod(lists);

        System out println( One: + oneOk);

        System out println( Two: + oOk);

        System out println( Three: + threeOk);

        System out println( four: + fourOk);

    }

    public static Long oneMethod(ListLong lists){

        Long timeStart = System currentTimeMillis();

        for(int i= ;ilists size();i++)    {

            System out println(lists get(i));

        }

        Long timeStop = System currentTimeMillis();

        return timeStop timeStart ;

    }

    public static Long oMethod(ListLong lists){

        Long timeStart = System currentTimeMillis();

        for(Long string : lists)    {

            System out println(string);

        }

        Long timeStop = System currentTimeMillis();

        return timeStop timeStart ;

    }

    public static Long threeMethod(ListLong lists){

        Long timeStart = System currentTimeMillis();

        IteratorLong it = erator();

        while (it hasNext())

        {

                System out println(it next());

        }

        Long timeStop = System currentTimeMillis();

        return timeStop timeStart ;

    }

    public static Long fourMethod(ListLong lists){

        Long timeStart = System currentTimeMillis();

        for(IteratorLong i = erator(); i hasNext();)    {

            System out println(i next());

        }

        Long timeStop = System currentTimeMillis();

        return timeStop timeStart ;

    }

}

容器类可以大大提高编程效率和编程能力 在Java 中 所有的容器都由SUN公司的Joshua Bloch进行了重新设计 丰富了容器类库的功能

Java 容器类类库的用途是 保存对象 它分为两类

Collection 一组独立的元素 通常这些元素都服从某种规则 List必须保持元素特定的顺序 而Set不能有重复元素

Map 一组成对的 键值对 对象 即其元素是成对的对象 最典型的应用就是数据字典 并且还有其它广泛的应用 另外 Map可以返回其所有键组成的Set和其所有值组成的Collection 或其键值对组成的Set 并且还可以像数组一样扩展多维Map 只要让Map中键值对的每个 值 是一个Map即可

迭代器

迭代器是一种设计模式 它是一个对象 它可以遍历并选择序列中的对象 而开发人员不需要了解该序列的底层结构 迭代器通常被称为 轻量级 对象 因为创建它的代价小

Java中的Iterator功能比较简单 并且只能单向移动

( ) 使用方法iterator()要求容器返回一个Iterator 第一次调用Iterator的next()方法时 它返回序列的第一个元素

( ) 使用next()获得序列中的下一个元素

( ) 使用hasNext()检查序列中是否还有元素

( ) 使用remove()将迭代器新返回的元素删除

Iterator是Java迭代器最简单的实现 为List设计的ListIterator具有更多的功能 它可以从两个方向遍历List 也可以从List中插入和删除元素

List的功能方法

List(interface): 次序是List最重要的特点 它确保维护元素特定的顺序 List为Collection添加了许多方法 使得能够向List中间插入与移除元素(只推荐 LinkedList使用) 一个List可以生成ListIterator 使用它可以从两个方向遍历List 也可以从List中间插入和删除元素

ArrayList: 由数组实现的List 它允许对元素进行快速随机访问 但是向List中间插入与移除元素的速度很慢 ListIterator只应该用来由后向前遍历ArrayList 而不是用来插入和删除元素 因为这比LinkedList开销要大很多

LinkedList: 对顺序访问进行了优化 向List中间插入与删除得开销不大 随机访问则相对较慢(可用ArrayList代替) 它具有方法addFirst() addLast() getFirst() getLast() removeFirst() removeLast() 这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈 队列和双向队列使用

Set的功能方法

Set(interface): 存入Set的每个元素必须是唯一的 因为Set不保存重复元素 加入Set的Object必须定义equals()方法以确保对象的唯一性 Set与Collection有完全一样的接口 Set接口不保证维护元素的次序

HashSet: 为快速查找而设计的Set 存入HashSet的对象必须定义hashCode()

TreeSet: 保持次序的Set 底层为树结构 使用它可以从Set中提取有序的序列

LinkedHashSet: 具有HashSet的查询速度 且内部使用链表维护元素的顺序(插入的次序) 于是在使用迭代器遍历Set时 结果会按元素插入的次序显示

lishixinzhi/Article/program/Java/hx/201311/26494

java的效率高,还是c的效率高?

C的运行效率明显要比JAVA高,因为C是编译型的,直接将源码编译成机器代码;而JAVA是解释型,源码被编译成二进制伪代码,由JAVA虚拟机解释执行。

但是,由于C是编译型的,它的可移植性差;而JAVA是解释执行,因此具有很好的移植性,可跨平台运行。

目前java运行速度是没有c快,但它的internet编程方面的强大优势,易学性,完全面向对象的特性,以及全美40%以上的公司都采用java,你说你想学什么?

java和c的速度比较,是相对的,针对不同的应用, 又不同的结果,编一个普通的本地应用程序,一般c 要快于java, 编web应用,由于c实现的cgi程序基本是进程型,而java application server 的管理servlet采用线程方式,所以,在访问量大的情况下,java有优势。

但是紧紧比较速度,除非是对实时性要求高的情况下,是不够的。由于JAVA又比较完整,规范的库,语言定义比较严格,一般开发速度比较高。

怎么比较java程序中三个方法的执行效率

最简单的方法,前后加上System.currentTimeMillis(),然后相减就可以得到运行时间。

但是,有时效率不只是在于运行时间,还有内存占用,线程等等。

复杂点的,可以用eclipse里面的Java Profiler工具。

关于C#,C,C++,JAVA的开发效率的比较,举例子说明。

c,c++,java实质上速度差不多,举个例子,比方说,c,c++,java都是纯写代码开发的,而c#就效仿VB,直接界面开发,并且支持开发windows application,连安装程序卸载程序都预编好了。当然快多了。

c得写#include(包含预编译类库函数),c++也是,java不用,所以java好一点,但是看代码简洁程度,c、c++又占优势,所以这个不好比。c、c++通常不是用做程序窗口开发的,因为有了c#。c#开发最快,但如果学的话还是先学c++,学好算法,再c#。

Java几种常用的IO写法与效率比较

Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较。虽然网上已经有了类似的文章,但是对他们的结论并不认同。常见的实现方法:1.for循环:for(int i = 0; i list.size(); i++) for(int i = 0, size = list.size(); i size; i++) 一般人都会认为第二种写法效率高。

2.foreach:for(Object obj : list) 这是一种简洁的写法,只能对列表进行读取,无法修改。

3.while:int size = list.size(); while(size-- 0) 4.迭代:

Object iter = list.iterator(); while(iter.hasNext()) { iter.next(); }测试代码: 针对以上几种方法编写的测试代码。 public static void main(String[] args) { List list = new ArrayList(); int runTime = 1000;//执行次数 for (int i = 0; i 1000 * 1000; i++) { list.add(i); } int size = list.size(); long currTime = System.currentTimeMillis();//开始分析前的系统时间 //基本的for for(int j = 0; j runTime; j++) { for (int i = 0; i size; i++) { list.get(i); } } long time1 = System.currentTimeMillis(); //foreach for(int j = 0; j runTime; j++) { for (Integer integer : list) { } } long time2 = System.currentTimeMillis(); for(int j = 0; j runTime; j++) { //while int i = 0 ; while(i size){ list.get(i++); } } long time3 = System.currentTimeMillis(); for(int j = 0; j runTime; j++) {//普通for循环 for (int i = 0; i list.size(); i++) { list.get(i); } } long time4 = System.currentTimeMillis(); for(int j = 0; j runTime; j++) {//迭代 Iterator iter = list.iterator(); while(iter.hasNext()) { iter.next(); } } long time5 = System.currentTimeMillis(); long time = time1 - currTime ; System.out.print("use for:" + time); time = time2 - time1; System.out.print("\tuse foreach:" + time); time = time3 - time2; System.out.print("\tuse while:" + time); time = time4 - time3; System.out.print("\tuse for2:" + time); time = time5 - time4; System.out.print("\tuse iterator:" + time); System.out.println(); }输出结果(JDK1.6):1.use for:8695 use foreach:17091 use while:6867 use for2:7741 use iterator:14144

2.use for:8432 use foreach:18126 use while:6905 use for2:7893 use iterator:139763.use for:8584 use foreach:17177 use while:6875 use for2:7707 use iterator:14345

结论:1.针对列表的 foreach的效率是最低:耗时是普通for循环的2倍以上。个人理解它的实现应该和iterator相似。2. list.size()的开销很小:list.size()次数多少对效率基本没有影响。查看ArrayList的实现就会发现,size()方法的只是返回了对象内的长度属性,并没有其它计算,所以只存在函数调用的开销。对数组的测试:将代码中的列表list换做数组再进行测试(iterator不适用),发现耗时基本为0。说明:

3. 列表的get()方法开销不少应该主要是检测数据合法性时产生的。将执行次数增加100万倍,这时可以看出结果基本相等,并没有明显的差异。说明:4. 数组length也没有开销可见数组长度并不是每次执行的时候都要计算的。联想一下Java创建数组的时候要求必须指定数组的长度,编译处理的时候显然没有把这个值抛弃掉。网上有一篇类似的文章,它居然得出了一个foreach执行效率最高的结论。

关于java的效率对比和java 效率的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。