当前位置:  技术问答>java相关

为什么i/o这么慢呢?

    来源: 互联网  发布时间:2015-05-24

    本文导语:  我做了一个写字板程序,把文件读到textarea中,我发现当读一个十几k的文件时 我得程序读的very slow;比notepad慢的多了,大家看看 try{ fin=new FileReader(filename); bfrin=new BufferedReader(fin); do { str=bfrin.readLine(); if(str!=null)  ta...

我做了一个写字板程序,把文件读到textarea中,我发现当读一个十几k的文件时
我得程序读的very slow;比notepad慢的多了,大家看看
try{
fin=new FileReader(filename);
bfrin=new BufferedReader(fin);
do
{
str=bfrin.readLine();
if(str!=null)
 ta.append(str+"n");
else
 break;
}
while (true);

|
优化一下,先把str + "n"加入到一个StringBuffer中,最后一次性添加到textarea中
StringBuffer s = new StringBuffer();
...
if(str!=null)
{
    s.append(str);
    s.append("n");
}
else
  break;
...
ta.append(s.toString());

|
简单字符串相加本来就很慢,使用StringBuffer的append可以避免新建String对象,重新分配内存空间;再者你对一个对象(textarea)多次进行append,效率很低。

|
我跟踪过append,也会新建String对象的!

|
除了用StringBuffer以外,

你尽量用InputStream,不要用Reader,这个慢。

另外,用本地byte[] 做缓冲比用Buffered.....快。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3