java关于StringBuffer和StringBuilder写入文件的效率问题
2015-06-15 15:11
701 查看
StringBuffer在存储字符的时候,是有上限的,一旦达到上线就会出错,自己在项目中遇到一个从数据库中查询数据,然后写入到本地文件中
,数据量大概有30万条,此时的效率十分的低。下面是大致的模拟该程序的代码,项目代码由于是银行的项目,就不贴出来了。看下大致的模拟代码
用时 第24行输出结果为230~236之间。
下面把StringBuffer换成StringBuider
用时 第24行输出结果为222~225之间。
通过结果可以看到,优化的效果很是明显,但是需要注意的是:
StringBuilder要比StringBuffer效率要高,如果是单线程不需要考虑同步问题,则可以使用StringBuilder提高效率。
,数据量大概有30万条,此时的效率十分的低。下面是大致的模拟该程序的代码,项目代码由于是银行的项目,就不贴出来了。看下大致的模拟代码
public class lis { public static void main(String[] args) throws IOException { File file1 = new File("D:\\io\\out.txt"); BufferedWriter bw = new BufferedWriter(new FileWriter(file1)); StringBuffer buffer = new StringBuffer("S|1|S0180||||"); buffer.append("\r\n"); List subList = new ArrayList(); List listid = new ArrayList(); long s= System.currentTimeMillis(); //防止大于1万条时出错,循环处理 for (int i = 0; i < 60; i++) { for(int k=0; k<5000; k++){ buffer.append("KKKKKKKKKKKKKKKKKKKKKKKKKK"+k); buffer.append("\r\n"); } bw.write(buffer.toString()); bw.flush(); buffer = new StringBuffer(); } long e= System.currentTimeMillis(); System.out.println(e-s); bw.close(); } }
用时 第24行输出结果为230~236之间。
下面把StringBuffer换成StringBuider
package mosTest; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class lis { public static void main(String[] args) throws IOException { File file1 = new File("D:\\io\\out.txt"); BufferedWriter bw = new BufferedWriter(new FileWriter(file1)); //StringBuffer buffer = new StringBuffer("S|1|S0180||||"); StringBuilder buffer = new StringBuilder("S|1|S0180||||"); buffer.append("\r\n"); List subList = new ArrayList(); List listid = new ArrayList(); long s= System.currentTimeMillis(); //防止大于1万条时出错,循环处理 for (int i = 0; i < 60; i++) { for(int k=0; k<5000; k++){ buffer.append("KKKKKKKKKKKKKKKKKKKKKKKKKK"+k); buffer.append("\r\n"); } bw.write(buffer.toString()); bw.flush(); //buffer = new StringBuffer(); buffer = new StringBuilder(); } long e= System.currentTimeMillis(); System.out.println(e-s); bw.close(); } }
用时 第24行输出结果为222~225之间。
通过结果可以看到,优化的效果很是明显,但是需要注意的是:
StringBuilder要比StringBuffer效率要高,如果是单线程不需要考虑同步问题,则可以使用StringBuilder提高效率。
相关文章推荐
- IOS UILabel的公共属性及拓展属性
- [HDOJ1005]Number Sequence
- 常用数据库validationQuery语句
- duilib模仿实现list ctrl的icon
- UIScrollView控件介绍
- require.js 使用博客
- 将Hadoop中SequenceFile,MapFile转换为文本文件
- 在NGUI中高效优化UIScrollView之UIWrapContent的简介以及使用
- 关于Xcode上的Other linker flags
- AndroidStudio 导包报 finished with non-zero exit value 2
- highcharts图表组件常见问题:highcharts图表组件错误集合分析大放送
- iOS开发- UITabBarItem自定义图片
- UILabel 常用属性
- 多线程02-GCD 掌握
- String StringBuffer StringBuilder区别
- error loading /system/media/audio/ui/KeypressStandard.ogg
- IOS 实现系统UINavigationController UINavigationBar 透明效果
- #leetcode#Permutation Sequence
- SDWebImage源码解析之SDWebImageManager的注解
- 管理系统UI之五:响应UI可见性的变化(Responding to UI Visibility Changes)