Java代码优化:使用构造函数和使用一个个setter的效率差别
2024-08-30 11:21:46
在对Java代码进行优化的时候,想方设法的要提高整体的效率,使用JProfiler看代码的时间占比,然后,看看哪些部分是可以优化的,减少运行时间的。下面有这么几个方向。
1. 能使用构造函数一步到位的,就尽量使用构造函数,而不是使用一个个setter函数
2. 能使用数组的,就使用数组。替代list,数组是真的快。
3. for循环的时候,使用for i循环针对list接口的集合,不使用for each 循环。for i循环的时候,把length的值提到for循环之外。
4. 有些变量能提出来的,取一次,多次使用。不要频繁的get。即使是一个简单的int值。
5. 要是能使用内部类的话,可以使用内部类,这样可以省去getter,setter方法的使用。
6. json的序列化和反序列化,不要说理论上是fastjson快,就使用fastjson,因为针对数据结构的简单复杂程度,来选择使用什么去序列化和反序列化,要实际测试之后,再说话。不能直接照搬理论,因为有时候Gson真的很快。
下面对这个构造和set的效率对比:
然后,使用的代码如下:
可以发现,构造就是比一个个设置要快不少,所以,在能一步到位给属性设置值的时候,考虑到效率问题,就要这么干!
不是有老铁说builder模式吗?
我好奇就测试了一下,万一这个builder模式快呢。
下面是builder的代码:
使用的Lombok的注解。
然后是JProfiler监测结果
结果:
可以看到,还是构造函数牛x呀,还是他快,另外,上面的比例:72.6 : 27.4 = 33 :12.4 = 2.64
构造和set的时间比例是没有变化的
最新文章
- jetty
- android 显示 PDF 文件
- callback的实现
- s3c2440 test 里面的一些用法
- 【转】linux中的cut/tr/join/split/xargs命令
- DataTable,DataSet,DataRow与DataView
- linux禁ping和允许ping的方法
- Oracle实践--PL/SQL表分区的基础
- 对flexbox伸缩概念的深入浅出解释
- vue小问题库
- canvas给图片加水印
- Flink--Table和DataStream和DataSet的集成
- mysql存储过程相关记录
- 2017-12-06 JavaScript实现ZLOGO子集: 单层循环功能
- Spring@Autowired注解与自动装配(转发)
- [转载] JVM 内存结构
- (面试题)如何查找Oracle数据库中的重复记录
- GL_总账完整会计周期业务(流程)
- HDU 2036 改革春风吹满地 (计算几何)
- GO语言官方中文教程!