
1 anyele 2017 年 7 月 14 日 via Android 1 小时? 我试过 Excel to txt,一行一行写,5 万行的 Excel 只需要 4-5 秒 |
2 ByteRan 2017 年 7 月 14 日 list 转 string,然后用回车分割.然后一次性写到 txt 文件里. |
3 ihuotui 2017 年 7 月 14 日 via iPhone nio |
4 af463419014 2017 年 7 月 14 日 nio+1 |
5 hcymk2 2017 年 7 月 14 日 java youclass > res.txt 看下要花多长时间。 |
6 Accldent 2017 年 7 月 14 日 先用 profiler 分析下大部分时间花在了哪儿再决定怎么优化,但是这种场景用 NIO 得不到质的提升,只是从数据流变成数据块 |
7 Finest 2017 年 7 月 14 日 看看磁盘的 IO 性能先 |
8 hyperdak 2017 年 7 月 14 日 List<String> list = Lists.newArrayList(); FileUtils.writeLines(new File("e:\\abcdddd.txt"), "utf-8", list); 啷个阔能一小时嘛? |
10 FreeFd 2017 年 7 月 14 日 via Android 其实多线程写也可以呀,类似于多线程下载的技术 |
12 iEverX 2017 年 7 月 15 日 只是第一行 10ms 吧,之后是顺序写,不可能一直 10ms |
13 autulin 2017 年 7 月 15 日 via Android nio+内存映射 |
15 DCjanus 2017 年 7 月 15 日 持续写入,性能瓶颈主要在磁盘 IO。 猜测其中可优化点: 1. 使用 buffer 减少磁盘 IO 次数 2. 一次性创建所需大小的文件后再写入,在大多数文件系统上可以获得更好的效率 详细解释: 1. 磁盘每次写入,不管是写入 1 个字节还是 1K 字节,只要在一定范围内,时间相差不多,所以尽量攒够一波再写入 2. 每次都是追加文件尾,文件系统一开始并不知道你的文件大小,一开始先创建一个恰当大小的文件,文件系统更容易做出优化,不同的文件系统实现不同,此处略去。 相关参考: 1. 创建特定大小文件: http://jk-t.iteye.com/blog/1930414 2. 使用 BufferedWriter 写文件 |
16 Valyrian 2017 年 7 月 15 日 明显是没 buffer 吧。。 |
18 ihuotui 2017 年 7 月 15 日 via iPhone 加上 4k 才刷盘,这样比较好,或者更大块,硬盘都是大块速度快,小文件慢 |