StringBuffer内容清空效率比较
在开发程序的时候,经常使用StringBuffer来进行字符串的拼接。如果在循环中来反复的做字符串拼接时,会清空Stringbuffer中的内容,然后再拼接新的字符串信息。
//有三种清空方式 StringBuffer buffer = new StringBuffer("我要被清空了 >_<"); buffer.setLength(0); buffer = new StringBuffer(); buffer.delete(0, buffer.length());
System.nanoTime() 返回最准确的可用系统计时器的当前值,以毫微秒为单位。(毫微妙就是纳秒)
System.currentTimeMillis() 返回以毫秒为单位的当前时间。
加入一段连接,说慎用currentTimeMillis() http://blog.sina.com.cn/s/blog_6b8bd9d80101fe8t.html 还是一脸懵逼
顺便记一下时间的换算关系
1秒=1000毫秒(ms)
1秒=1,000,000 微秒(μs)
1秒=1,000,000,000 纳秒(ns)
1秒=1,000,000,000,000 皮秒(ps)
后面还有飞秒 阿秒 等等一脸懵逼。。。。
从大到小都是1000倍的关系
晒一下测试代码
有的帖子说setLength(0)是效率最高的,结果测试出来还是有歧义的(只代表个人观点看法)
package test; public class testStringBufferClear { public static void main(String[] args) { for (int i = 0; i < 30; i++) { method1(); System.out.print(" "); method2(); System.out.print(" "); method3(); System.out.println(); } } //setLength(0)方法 private static void method1() { long s1, s2; StringBuffer buffer = new StringBuffer("我要被清空了 >_<"); s1 = System.nanoTime(); for (int i = 0; i < 5000000; i++) { buffer.setLength(0); } s2 = System.nanoTime(); System.out.print((s2 - s1)); } //new StringBuffer()方法 private static void method2() { long s1,s2; StringBuffer buffer = new StringBuffer("我要被清空了 >_<"); s1 = System.nanoTime(); for (int i = 0; i < 5000000; i++) { buffer = new StringBuffer(); } s2 = System.nanoTime(); System.out.print((s2 - s1)); } //delete(.....)方法 private static void method3() { long s1,s2; StringBuffer buffer = new StringBuffer("我要被清空了 >_<"); s1 = System.nanoTime(); for (int i = 0; i < 500000; i++) { buffer.delete(0, buffer.length()); } s2 = System.nanoTime(); System.out.print((s2 - s1)); } }
测试的结果
77091109 62346975 16644471 70461894 61569434 17278737 63527655 58137005 13975624 63570761 58224858 12368405 62810873 29885249 13378306 69865806 74074545 12668912 62910221 51777917 12772365 65503119 32772496 12753481 63969795 31655449 12599122 64243207 50018391 12660702 62930748 117742471 12974756 63233307 29723501 12538775 63112201 31361510 13310979 67472014 29921375 12715301 64539608 30244051 12911123 66640694 29629489 13097093 67618162 48285961 12662344 63656152 29331446 12484585 63042411 30603674 12442300 63386023 29300246 12842977 63188970 28459483 12614722 62952916 29402467 12666449 62381871 28672137 12638122 64050669 29409857 12489511 63051853 31789692 13515832 64487472 29659869 13763381 65123790 44509919 12464058 63852384 28531736 12850776 64751441 32338978 12332279 63437340 28575663 12424648
添加近千长度的字符串后
79280869 68364093 24834516 67602973 70277566 19302232 77915450 62548955 13769950 68215482 64663177 13432084 67390730 33378437 13133220 68378051 76681402 13868476 68034028 53389242 13410737 68214250 34754939 14827060 68084523 34071820 13526917 67219128 53689338 13256789 69229898 121597745 13803202 66715000 32174767 13761329 69370709 32394811 14568427 72390557 31248204 14572944 69659310 31044172 14237131 72759211 33524996 13303589 70227072 29709543 12510448 63689814 29024781 12532206 66542578 29140961 13048240 64335166 46217718 13011704 63995658 29432025 12494027 63803942 31202635 13344642 71394615 33262668 13850414 66684620 29084718 12909481 71696353 29069119 12879924 63870857 28831832 12396732 65090948 29830649 12624164 65497782 29249751 12982966 63846226 39771188 12686565 63665182 34394906 12874997
从上面的数据看出delete方法的效率还是蛮快的
浙公网安备 33010602011771号