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