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的效力对照
package com.lxk.fast; import com.google.common.collect.Lists; import com.lxk.model.Car; import com.lxk.model.Dog; /** * 测试谁快 直接组织或许一个个set,他们的效力差若干 * * @author LiXuekai on 2019/6/18 */ public class FastIsConstructOrSet { public static void main(String[] args) { testFast(); } /** * 运用JProfiler看时候占比 */ private static void testFast() { while (true) { //27.4% set(); //72.6% construct(); } } /** * 组织函数来给属性赋值 */ private static void construct() { Car car = new Car("oooo", 100, Lists.newArrayList(new Dog("aaa", true, true))); } /** * set来给属性赋值 */ private static void set() { Car car = new Car(); car.setSign("oooo"); car.setPrice(100); Dog dog = new Dog(); dog.setName("aaa"); dog.setAlive(true); dog.setLoyal(true); car.setMyDog(Lists.newArrayList(dog)); } }
能够发明,组织就是比一个个设置要快不少,所以,在能一步到位给属性设置值的时刻,考虑到效力题目,就要这么干
(2019-07-16 新增)
不是有老铁说builder形式吗?
我猎奇就测试了一下,万一这个builder形式快呢。
下面是builder的代码
/** * 运用JProfiler看时候占比 */ @Test public void testFast2() { while (true) { //33% set(); //12.4% construct(); //54.6% builder(); } } /** * 运用lombok的 builder 形式来赋值 */ private static void builder() { Car car = Car.builder() .sign("0000") .price(100) .myDog(Lists.newArrayList(Dog.builder().name("aaa").alive(true).isLoyal(true).build())) .build(); }
然后是JProfiler监测效果
效果:
能够看到,照样组织函数牛x呀,照样他快,别的,上面的比例:72.6 : 27.4 = 33 :12.4 = 2.64
组织和set的时候比例是没有变化的。
以上就是Java中运用组织函数与运用setter的效力差异的细致内容,更多请关注ki4网别的相干文章!