美文网首页java收集程序员Java技术文章
测试身边故事系列:😈的java,ArrayList.remove

测试身边故事系列:😈的java,ArrayList.remove

作者: 来自地球的专项测试 | 来源:发表于2016-03-30 10:42 被阅读676次

    想都不用想,removeAll是时间复杂度是O(n2)的,恐怖呀。 我也是看我们产品一个过滤消息的代码为什么执行时间这么长,我才想起的。究竟有多恐怖,给大家点直观感受,举个例子:

    创建一个这样的类 灌到一个listview里面

    如果我要删掉arraylist里面的,属性b填的是“bb”的。要怎么做。

    方法1:

    传说中的removeall

    方法2:

    遍历一次完成

    结果:

    测试5次,第一次可能是刚启动android app,申请内存等缘故,时间特别长。哪怕把最大的两个值去掉,相差的倍数也不用我描述了吧。

    方法1:1202ms  751ms   333ms   337ms  306ms

    方法2:   3ms  6ms  1ms  2ms  2ms

    想一想:

    我之后去搜索了一下,确实有类似的文章说这个事情,文章内容也是很👍的。不过这一切没有超越我的常识,我一直也认为,java嘛,确实它的库本身的实现,在效率方面真的有待考量。例如上次被坑的string.split, 居然里面又是arraylist,又是正则的,频繁使用,也是大量gc;还有effective java推荐的stringbuilder,创建的时候不去填个长度的话,各种扩容,tostring之后各种gc,尽量不要new,把原来的delete来用吧,会好很多; 条数n多的用arraylist+范型和用数组的内存消耗也是天差地别。大家多留个心,特别是优化后期,或者性能瓶颈就在这些不起眼的地方了,也许你就是被字符串害死的。

    相关文章

      网友评论

      本文标题:测试身边故事系列:😈的java,ArrayList.remove

      本文链接:https://www.haomeiwen.com/subject/uvhdlttx.html