ArrayList确定大小后,可以性能提升

ArrayList的特点是可以动态改变长度,但是每次改变长度的时候性能花费是很大的,所以我们可以通过它自身的ensureCapacity()事先就给它决定好长度,这里有个前提,必须大概预测它的长度是多少.但是测试出结果出乎我的意料,大家一起来看看什么原因

package snippet;

import java.util.ArrayList;

public class ArrayListTest {

public static void main(String[] args) {

final int count = 1000000;

long startTime, stopTime, time;

ArrayList<String> arrayList = new ArrayList<String>();

ArrayList<String> arrayList2 = new ArrayList<String>();

startTime = System.currentTimeMillis();

for (int i = 0; i < count; i++) {

arrayList.add("a");

}

stopTime = System.currentTimeMillis();

time = stopTime - startTime;

System.out.println("ArrayList插入100000个数的时间是:" + time);

startTime = System.currentTimeMillis();

arrayList2.ensureCapacity(count);

for (int i = 0; i < count; i++) {

arrayList.add("a");

}

stopTime = System.currentTimeMillis();

time = stopTime - startTime;

System.out.println("ArrayList在确定大小后插入100000个数的时间是:" + time);

}

}

//输出结果:

//ArrayList插入100000个数的时间是:35

//ArrayList在确定大小后插入100000个数的时间是:56

时间: 2024-11-12 00:47:55

ArrayList确定大小后,可以性能提升的相关文章

java编程中的性能提升问题

java编程中的性能提升 软件产品犹如一栋大楼,大楼在建设初期,会有楼房规划,建筑构想,打牢地基,后面才是施工人员进行进行实质性的建设.要保证软件产品的高质量,优秀的架构,优秀的产品设计,是产生高质量的前提.同时,没有过硬的编码实现,一样得不到预期的效果.纵观现在的产品,产品架构没多大差别,基本运用基线版本进行局点定制.而系统中的一些功能性能常常不过关,问题往往就出在编码实现上.这块是开发人员在开发过程中需要注意的.在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良

hbase很有价值的读写性能提升

NoSQL现在风生水起,hbase的使用也越来越广,但目前几乎所有的NoSQL产品在运维上都没法和DB相提并论,在这篇blog中来总结下我们在运维hbase时的一些问题以及解决的方法,也希望得到更多hbase同行们的建议,:) 在运维hbase时,目前我们最为关注的主要是三大方面的状况:1. Cluster load:2. 读写:3. 磁盘空间. 1. Cluster load集群的load状况直接反映了集群的健康程度,load状况的获取非常容易,直接部署ganglia即可得到,由于hbase以

Web 应用性能提升 10 倍的 10 个建议

转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计信息). 我们现在所处的时代要求一直在线和互联互通,这意味着用户对性能有更高的期望.如果网站响应不及时,或者应用有明显的延迟,用户很快就会跑到竞争者那边去. 例如,Amazon 十年前做的一项研究表明,网页加载时间减少 100 毫秒,收入就会增加  1%.最近另一项研究凸显了一个事实,就是有一半以上

YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧

最近在进行 YbSoftwareFactory 的流程功能升级,目前已经基本完成,现将用到的一些关于 Web Api 及 MVC 性能提升的一些小技巧进行了总结,这些技巧在使用.配置上也相当的简单,但通常都能大大提高应用程序的性能,希望对大家有用. 一.缓存 为了避免每次请求都去访问后台的资源,我们一般会考虑将一些更新不是很频繁的,可以重用的数据,通过一定的方式临时地保存起来,后续的请求根据情况可以直接访问这些保存起来的数据,这种机制就是所谓的缓存机制.缓存分为页面输出缓存,内存数据缓存和缓存依

优化临时表使用,SQL语句性能提升100倍

[问题现象] 线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右.SQL语句如下:SELECT DISTINCT g.*, cp.name AS cp_name, c.name AS category_name, t.name AS type_name FROMgm_game g LEFT JOIN gm_cp cp ON cp.id = g.cp_id AND cp.deleted = 0 LEFT JOIN gm_cate

深度学习性能提升的诀窍

深度学习性能提升的诀窍[转载] 原文: How To Improve Deep Learning Performance 作者: Jason Brownlee 提升算法性能的想法 这个列表并不完整,却是很好的出发点.我的目的是给大家抛出一些想法供大家尝试,或许有那么一两个有效的方法.往往只需要尝试一个想法就能得到提升.我把这个列表划分为四块: · 从数据上提升性能 · 从算法上提升性能 · 从算法调优上提升性能 · 从模型融合上提升性能 性能提升的力度按上表的顺序从上到下依次递减.举个例子,新的

(转)Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理.解决办法) Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列06之 Vector详细介绍(源码解析)和使用示例 Java 集合系列07之 Stack详细

(转)多线程下:Vector、Hashtable、ArrayList、LinkedList、HashMap 性能特征

最近在研究关于多线程环境下如何提升性能,在程序中执行最多的是“查询”,但同时也要维护数据的“添加”和“删除” 目前在 Hashtable 和 HashMap 中选择. 看了jdk文档,我们知道 Hashtable是同步的,而HashMap是不同步的. 所以一开始的时候,我采用的是 Hashtable,因为程序中80%的时间是在进行“查询”,所以为了提升速度,我改为 HashMap,经过几个小时的上线测试发现一个问题: 因为我在另一个单独的线程中每隔30秒对HashMap进行数据的维护(删除数据)

iOS App性能提升的技巧

原文引用https://www.dazhuanlan.com/2019/08/26/5d62f6f027452/ / OPTIMIZATION 从25 iOS App Performance Tips & Tricks翻译了部分提高app性能的技巧 中阶性能提升建议 9)复用和延迟加载 更多的视图意味着更多的绘制,这些最终意味着更多CPU和内存的开销.在通过UIScrollView展示很多视图时开销尤为明显. 因此,效仿UITableView和UICollectionView的思路,并不在一开始