社区
Java SE
帖子详情
为什么i/o这么慢呢?
starry
2002-05-05 09:43:26
我做了一个写字板程序,把文件读到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);
...全文
65
9
打赏
收藏
为什么i/o这么慢呢?
我做了一个写字板程序,把文件读到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);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
马行空牛耕田
2002-05-08
打赏
举报
回复
“ 我跟踪过append,也会新建String对象的!”
我想,即便有新建,JDK也会对之进行优化的! :)
wangwenyou
2002-05-08
打赏
举报
回复
你并没有重复创建StringBuffer,自始至终,只有一个StringBuffer对象
oscarjiao
2002-05-08
打赏
举报
回复
那我如果想在循环里不每次重新分配空间,用append反复建立StringBuffer的对象,那么怎么实现该对象在每次循环尾的清空呢?
hccpro
2002-05-07
打赏
举报
回复
除了用StringBuffer以外,
你尽量用InputStream,不要用Reader,这个慢。
另外,用本地byte[] 做缓冲比用Buffered.....快。
wangwenyou
2002-05-07
打赏
举报
回复
StringBuffer应该只新建了一个对象,以后在append时不必与+一样要重新分配内存空间了。
wangwenyou
2002-05-07
打赏
举报
回复
不至于吧?我没仔细去看过String的实现,不过据说它是用StringBuffer实现的;总之,StringBuffer确实比String高效。
oscarjiao
2002-05-07
打赏
举报
回复
我跟踪过append,也会新建String对象的!
wangwenyou
2002-05-05
打赏
举报
回复
简单字符串相加本来就很慢,使用StringBuffer的append可以避免新建String对象,重新分配内存空间;再者你对一个对象(textarea)多次进行append,效率很低。
wangwenyou
2002-05-05
打赏
举报
回复
优化一下,先把str + "\n"加入到一个StringBuffer中,最后一次性添加到textarea中
StringBuffer s = new StringBuffer();
...
if(str!=null)
{
s.append(str);
s.append("\n");
}
else
break;
...
ta.append(s.toString());
跟汤老师学Java(第15季):I/O输入输出流
本课程从零开始,以通俗易懂的方式讲解Java技术,手把手教你掌握每一个知识点。 真正做到零基础入门学习,适合初学者的教程! 课程内容包括: 1.File类 2.IO流简介 3.流的分类 ...
I/O接口
这个I/O是什么意思?下面小编来给你讲解一下I/O接口知识吧? 开讲之前,想必大家都见过以下这些接线吧? 没错,这些就是I/O接口的接线线材。 那什么是I/O呢?从专业的角度来说,l/O 接口是主机与被控对象进行信息...
I/O 接口与端口
1.2 为什么需要 I/O 接口 为什么我们需要面向接口编程? 外设种类繁多:微机和 I/O 设备的信息类型和格式不一样,且不同外设也不一样 速度不匹配:必须通过 I/O 接口进行调节 单台主机多个I/O 设备:如果不通过...
I/O基础知识:什么是I/O设备?
文章目录I/O设备I/O设备是哪些【1】块设备【2】字符设备设备控制器 I/O设备 操作系统的三个基础:进程、地址空间和文件 除此之外,操作系统还要控制所有的I/O设备。OS(操作系统)必须向设备发送命令、捕捉中断并...
什么是I/O,你真的懂了吗?
在计算机系统中I/O就是输入(Input)和输出(Output)的意思,针对不同的操作对象,可以划分为磁盘I/O模型,网络I/O模型,内存映射I/O, Direct I/O、数据库I/O等,只要具有输入输出类型的交互系统都可以认为是I/O系统...
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章