打字猴:1.700475291e+09
1700475291
1700475292 运行结果如下所示:
1700475293
1700475294 执行时间:172 ms
1700475295
1700475296 同样,我们看看以String类型作为外部状态的运行情况,如代码清单28-16所示。
1700475297
1700475298 代码清单28-16 场景类
1700475299
1700475300 public class Client{
1700475301
1700475302 public static void main(String[]args){
1700475303
1700475304 String key1=“科目1上海”;
1700475305
1700475306 String key2=“科目1上海”;
1700475307
1700475308 //初始化对象池
1700475309
1700475310 SignInfoFactory.getSignInfo(key1);
1700475311
1700475312 //计算执行10万次需要的时间
1700475313
1700475314 long currentTime=System.currentTimeMillis();
1700475315
1700475316 for(int i=0;i<10000000;i++){
1700475317
1700475318 SignInfoFactory.getSignInfo(key2);
1700475319
1700475320 }
1700475321
1700475322 long tailTime=System.currentTimeMillis();
1700475323
1700475324 System.out.println(“执行时间:”+(tailTime-currentTime)+“ms”);
1700475325
1700475326 }
1700475327
1700475328 }
1700475329
1700475330 运行结果如下所示:
1700475331
1700475332 执行时间:78 ms
1700475333
1700475334 看到没?一半的效率,这还是非常简单的享元对象,看看我们重写的equals方法和hashCode方法,这段代码是必须实现的,如果比较复杂,这个时间差异会更大。
1700475335
1700475336 各位,想想看,使用自己编写的类作为外部状态,必须覆写equals方法和hashCode方法,而且执行效率还比较低,这种吃力不讨好的事情最好别做,外部状态最好以Java的基本类型作为标志,如String、int等,可以大幅地提升效率。
1700475337
1700475338
1700475339
1700475340
[ 上一页 ]  [ :1.700475291e+09 ]  [ 下一页 ]