`

Java优化编程学习笔记一-----Java核心类与性能优化

阅读更多
一、散列表类与性能优化
线程同步散列表类
1.Vector 与ArrayList
对于线程安全而言,一些散列表核心类是线程安全的,如Vector类,一些核心类不是线程安全的,如ArrayList类。
原则:对线程安全有严格要求时,尽量选用线程安全的散列表类,在不要求的情况下,尽量选用非线程安全的散列表类,因为线程安全的散列表会将本来可以并行处理的任务的多线程进行排队。当这些线程试图并行访问该散列表对象时,会被转为串行处理。

2.设置ArrayList初始化容量
ArrayList给新添加的元素提供必要的存储空间,需要增加自身的内部数据结构,这个过程由系统自动完成。但如果数组很大,需要提高添加元素的性能
先看一个例子
public class SetArraySize{
    final int N = 1000000;
    Object obj=new Object();
    ArrayList list = new ArrayList();
    long startTime = System.currentTimeMills();
    for(int i=1; i<N; i++){
        list.add(obj);
   }
    long  endTime = System.currentTimeMills();

   System.out.println("没有ensucreCapacity耗时:"+ (endTime-startTime)     +ms);

    list = new ArrayList();
    long startTime = System.currentTimeMills();
    list.encrureCapacity(N);
    for(int i=1; i<N; i++){
        list.add(obj);
   }
    long  endTime = System.currentTimeMills();

   System.out.println("调用ensucreCapacity耗时:"+ (endTime-startTime)+ms);
}


  
运行结果:
   没有ensucreCapacity耗时:172ms
   调用ensucreCapacity耗时:63ms

提前调用ensucreCapacity,系统性能大大提高

3、ArrayList与LinkedList
ArrayList通过内部数组结构Object[]实现,而LinkedList通过一系列的内部记录连接在一起实现,不同场合的应用,性能差别较大
二、String类与性能优化

1.字符串累加与性能优化
StringBuffer.append累加字符串比 + 或+=累加性能高很多,数值越大,差别越大

2.字符串的lentht()与性能优化

在循环外就计算好字符串的长度int len=s.length(),不要在循环中用for(int i=0;i<s.length();i++).每循环一次都要计算长度,必然耗系统资源

3.toCharArray()

调用toCharArray()将字符串转为数组,通过数组索引值获取指定位置的字符,比用charAt()逐一获取特定位置的字符性能提高

4.字符串转为数字

d=new Double("8.97");
d=new Double(8.97); 第二种写法比第一种写法性能高很多倍

三.系统I/O类

1.通过系统缓冲流提高I/O操作效率
2.自定制缓冲区提高I/O操作效率
更大程度提升系统性能。
3.通过压缩流提高I/O操作效率
ZipOutputStream










0
0
分享到:
评论
2 楼 mercyblitz 2010-06-21  
引用
3.toCharArray()
调用toCharArray()将字符串转为数组,通过数组索引值获取指定位置的字符,比用charAt()逐一获取特定位置的字符性能提高


编译器方法内联之后,没有区别。
1 楼 mercyblitz 2010-06-21  
引用
#  list = new ArrayList(); 
#     long startTime = System.currentTimeMills(); 
#     list.encrureCapacity(N); 


改成#  list = new ArrayList(N); 

性能会更好。

相关推荐

    瑜琅java学习笔记

    1 java起源 2 java语言概述 3 简单(基本)数据类型 4 运算符:java有四大类运算符:算数运算、位运算、关系运算和逻辑运算 5 程序控制语句 6 介绍类:类是java的核心和本质 7 深入方法和类:方法重载、参数传递和递归...

    Java并发编程(学习笔记).xmind

    Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...

    Java 虚拟机学习笔记:Java 内存区域,垃圾收集,内存分配与回收策略,JVM 调优,文件结构,类加载机制,Java 程序

    Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...

    Java学习笔记(必看经典)

    Java学习笔记(必看经典) JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性)...

    Java 基础学习笔记:数据类型,常见运算,final &amp;amp; static,Java 常见类,异常 &amp;amp; 反射

    Java 基础学习笔记,主要包括: 10_Java常见对象.md 10_Java常见对象_2.md 1_数据类型.md 3_运算.md 4_Object通用方法.md 5_关键字.md 6_反射.md 8_泛型.md JDK8新特性.md 正则表达式.md Java是一种面向对象的编程...

    java内部学习笔记.docx

    Java技术基础 4 1.1编程语言 4 1.2 Java的特点 4 1.3 Java开发环境 4 1.4 Java开发环境配置 5 1.5 Linux命令与相关知识 5 1.6 Eclipse/Myeclipse程序结构 6 Java语言基础 7 2.1基础语言要素 7 2.2八种基本数据类型 7...

    java8源码-java-learning-copy:java-学习-复制

    学习笔记,笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解 Java 基础语法,想进一步深入学习的人 含博客讲解和源码实例,采用 maven 构建,分模块学习,涉及反射,代理,多线程,IO,集合类等核心...

    Java 并发学习笔记:进程和线程,并发理论,并发关键字,Lock 体系,原子操作类,发容器 &amp; 并发工具,线程池,并发实践

    Java 并发学习笔记: 进程和线程, 并发理论, 并发关键字, Lock 体系, 原子操作类, 发容器 & 并发工具, 线程池, 并发实践 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的...

    java核心面试笔记+核心知识源码降解

    通过带着读者从java基础到java编写spring全家桶框架面试以及技术讲解,例如:集合,数组,JVM,引用类型,IO/NIO,多线程,类加载机制,spring设计原理等内容实现。 适合人群:具备一定编程基础,工作3-5年的研发...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    《Java2核心技术》笔记

    《Java2核心技术》笔记 作者:叶加飞 加拿大.达内科技 (上海中心) 笔记包含以下文档: 面向对象技术总结.pdf corejava高级个性总结.pdf 接口学习总结.pdf 异常和内部类.pdf 集合框架学习总结.pdf GUI和AWT事件模型....

    Java笔记,自己学习Java总结的超级详细的笔记,适合在校大学生学习或者想自学Java的人

    1、注重Java基础的学习,Java技术水平以后可以达到什么高度,完全取决于Java基础的理解程度,所以我建议大家买《Java核心技术》这门书好好研究一下,这里面详细讲解了JavaSE所有内容的原理,如果你能把这本书研究透...

    java-learning:逐步打造在线最佳的Java学习笔记,包括博客讲解和源码实例,包括Java SE和Java Web

    初步打造在线最佳的Java学习笔记,笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解Java基础语法,想进一步深入学习的人 含博客讲解和二进制实例,采用maven构建,分模块学习,涉及反射,代理,多线程...

    java8源码-JavaSE-Code:JavaSE的代码练习与学习笔记总结

    [Java多线程核心编程技术] 书籍笔记 第一章:Java多线程技能 线程是进程中的子任务 interrupted与isInterrupted的区别: interrupted是Thread类的静态方法,里面调用了isTnterrupted方法[currentThread().isInterrupted...

    Java SE查阅手册.pdf

    笔记适合了解Java或者有学过其他编程语言的Java初学者学习,多线程与IO的提高笔记与Spring的笔记还在总结当中,另外Linux、MySQL的笔记以后也会发布。现在也是边学习边总结,所以总结的此笔记必然有不足的地方,如果...

    java8源码-java-learning:java练习库

    学习笔记,笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解 Java 基础语法,想进一步深入学习的人 含博客讲解和源码实例,采用 maven 构建,分模块学习,涉及反射,代理,多线程,IO,集合类等核心...

    java8源码-java-learning:java学习

    学习笔记,笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解 Java 基础语法,想进一步深入学习的人 含博客讲解和源码实例,采用 maven 构建,分模块学习,涉及反射,代理,多线程,IO,集合类等核心...

    java8源码-java-learning:java-learning.git

    学习笔记,笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解 Java 基础语法,想进一步深入学习的人 含博客讲解和源码实例,采用 maven 构建,分模块学习,涉及反射,代理,多线程,IO,集合类等核心...

Global site tag (gtag.js) - Google Analytics