「java的效率对比」java 效率
本篇文章给大家谈谈java的效率对比,以及java 效率对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java语言自身的运行效率和java本机运行效率的比较
- 2、Java List遍历方法及其效率对比
- 3、java的效率高,还是c的效率高?
- 4、怎么比较java程序中三个方法的执行效率
- 5、关于C#,C,C++,JAVA的开发效率的比较,举例子说明。
- 6、Java几种常用的IO写法与效率比较
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 效率的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-28,除非注明,否则均为
原创文章,转载请注明出处。