栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通常行能优化点描述:

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通常行能优化点描述:

一:java程序优化

1:字符拼接:(StringBuffer)

对比:  不要+号拼接字符串,用StringBuffer的append来拼接、性能很好

方式一

 程序跑起来,大约花费 27687 毫秒。

方式二

使用 StringBuilder 进行拼接字符串。

6:cpu的优化点

cpu有:空间局部性和时间局部性两种特性:

   一:空间局部性,当cpu获取数据时,如果这个数据是连续数据,那么cpu会把当前数据和该数据的连续数据读取到cpu的三级缓存中。  那么当下次读取的数据在连续数据中时,就直接在cpu三级缓存中读取就行。减少了读取内存的次数。(在cpu这一层,从内存中读取数据比从cpu的三级缓存中读取数据慢的多)

二:时间局部性

 程序跑起来,大约花费 24 毫秒。

2:数据分割:(StringTokenizer)

    string的split()和字符串分割工具类StringTokenizer

方式一:

经常用 String 提供的 split() 方法来满足业务需求。

花费大约 3000 多毫秒。

方式二:

采用字符串分割的工具类 StringTokenizer。

 采用 StringTokenizer 完成 split() 同样的数据分割,花费大约 500 毫秒。

3:数组赋值  (System.arraycopy() ) 方式一:

 方式二:

System.arraycopy() 来完成数组复制

 方式一和方式二差距不大,但是数据量大的情况下用System.arraycopy() 好一点

4:关注循环体 方式一:

让程序与少做重复的计算,关注循环体内的代码

花费时间:30毫秒

 方式二:

 花费时间:2毫秒

结论:从循环体中提取重复的代码 到循环体外,可以有效提升系统性能

5:List

List是一个接口,它继承于Collection的接口,它代表着有有序队列,当我们讨论List的时候,一般和Set做比较。

java类中集合类中的关系图,从中了解集合关系

一:ArrayList、 linkedList 和 Vector之间的区别:
 

ArrayList:底层是数组,可以认为ArrayList是一个可以改变大小的数组,

linkedList:底层是通过双向链表实现的,linkedList和ArrayList之前的区别主要是数组和链表的区别。

在内存中:

数组:内存连续,可以通过地址增量获取。

链表:内存多数,不连续。需要比那里。

二:ArrayList和linkedList对比:ArrayList查询速度比较快

这个和cpu的空间局部性有关:

   一:数组因为数据在内存中连续。所以可以把要查询的数据,并且该数据--连续的数据缓存到cpu的缓存中。

   二:链表在内存中数据不连续,只能去内存中一个个读取

各级别的存储器速度差异非常大,CPU寄存器速度是内存速度的100倍! 这就是为什么CPU产商发明了CPU缓存。 而这个CPU缓存,就是数组和链表的区别的关键所在。

CPU缓存会把一片连续的内存空间读入, 因为数组结构是连续的内存地址,所以数组全部或者部分元素被连续存在CPU缓存里面, 平均读取每个元素的时间只要3个CPU时钟周期。   而链表的节点是分散在堆空间里面的,这时候CPU缓存帮不上忙,只能是去读取内存,平均读取时间需要100个CPU时钟周期。 这样算下来,数组访问的速度比链表快33倍! (这里只是介绍概念,具体的数字因CPU而异)

三:ArrayList和linkedList对比:linkedList添加删除比较快

    数组:添加或者删除数据,需要移动后面的所有数据

    链表:只要增加一个节点,通过指针操作,不需要移动后面的元素。

四:ArrayList、 Vector之间的区别

ArrayList和Vector都是通过数组实现的,但是Vector线程安全的,和ArrayList相比,Vector的很多方法都是通过同步(synchronized)处理来保证线程安全。所以一般情况不涉及线程就不用Vector

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号