java核心类与性能优化
来源:互联网 发布:linux 脚本优先级 编辑:程序博客网 时间:2024/04/20 05:17
1. 散列表类
1.1一些散列表核心类是线程安全的,如Vector/Hashtable类,另一些不是线程安全的,如ArrayList/HashMap类。在不要求线程安全的场合尽量选择非线程安全的散列表类,因为线程安全的散列表会将多线程转化为串行处理。
也可以将ArrayList标示为线程安全对象来保证线程安全
List list = Collections.synchronizedList(new ArrayList())
1.2调用ArrayList对象中ensureCapacity()方法预先设置数组的大小做好初始化工作可以在处理已知容量的较大数组时使用。
1.3ArrayList和LinkedList
ArrayList是通过内部数组结构Object[]实现的,而LinkedList通过将一系列的内部记录连接在一起,是数据结构中的链表对象。
1) 在试图将新的元素插入某个位置,LinkedList比ArrayList快得多。
2) 查找已经存在的元素,ArrayList比LinkedList快。
由于ArrayList和LinkedList都实现了共同的接口List,因此可以利用接口向下兼容的特性来实现运行时根据系统的具体要求传递合适对象类型。
List list = new ArrayList();
或是在声明方法中使用:voidf(List list)代替void f(ArrayList list)。
2. String 类
2.1用StringBuffer 类的append()方法代替String类的”+”操作符,可以大幅提高性能。
2.2将String.length()方法放到循环调用之外,否则将每次都调用这个方法。
2.3通过指定的索引值获取该处的字符的方法charAt()与获取length()方法类似,可以通过调用toCharArray()将字符串转化为字符数组char[],通过数组索引值获取指定位置的字符。
3.系统I/O类
3.1 二进制数据输入/输出流负责处理二进制数据,高层接口是InputStream和OutputStream,字符数据输入/输出流负责处理字符数据,高层接口是Reader和Writer。
3.2系统缓冲流类
InputStreamin = new FileInputStream(fileFrom); InputStreaminBuffer = new BufferedInputStream(in);
来代替
InputStreamin = new FileInputStream(fileFrom)
系统输入输出的缓冲区类中设置了一个512B的缓冲区。
3.3 自定制缓冲区
InputStream in =new FileInputStream(fileFrom);byte[] bytearea= new byte[bytelength];char[] charset =in.read(bytearea);
bytelength最好是512的倍数,自定义缓冲区进行数据读取与写入的方式比起系统缓冲流更加高效。
3.4通过压缩流提高I/O操作效率
ZipOutputStreamzipos = new ZipOutputStream(new FileOutputStream(fileTo));zipos.setMethod(ZipOutputStream.DEFLATED);ZipEntryzipentry = new ZipEntry(fileto);zipos.putNextEntry(zipentry);zipos.write(byte[],0,n);
除了在文件读写方面可以采用压缩流提高系统性能之外,在网络传输中也可以通过压缩流节约网络资源,提高传输效率。
- java核心类与性能优化
- 网站性能优化核心
- java 并发与性能优化
- mysql性能优化的核心
- 《大型网站核心架构+核心原理与案例分析》之网站性能优化
- String 类与性能优化
- java性能优化-Arraylist与Linkedlist整改查性能比较
- 《JAVA 程序性能优化》读书笔记:木桶原理与性能瓶颈
- Java 性能优化系列之1[设计与程序优化]
- 性能测试与性能优化
- 性能优化与测试
- 性能测试与优化
- 程序性能与优化
- 性能优化与测试
- 性能与优化命令
- java代码优化---->性能优化
- java内存优化性能优化
- Java性能优化:程序优化
- day04
- HDU 1160(我真的不会DP啊啊啊啊)
- jQuery框架下的多选文本框
- c++三种野指针
- javascript生成对象编程模式
- java核心类与性能优化
- 记C++课程设计--学生信息管理系统
- C++网络爬虫的实现——WinSock编程
- 读写文件:每次读入大文件中的一行、读写.CSV文件
- iOS应用程序开发过程的简述
- 在Editplus中配置java的(带包)编译(javac)和运行(java)的方法
- android java.net.UnknownHostException: Unable to resolve host "...": No address associated 错误
- 简单的内存法操作BMP图像函数
- 我以前从来不会多想