【问题标题】:Writing a big text file fast快速编写大文本文件
【发布时间】:2023-03-17 02:33:01
【问题描述】:

如何在 Android 上快速编写大文本文件?
我用 PrintWriter、BufferedWriter 和 FileWriter 做了一些测试,但没有明显的时间差异,写入时间大约是读取时间的 3 倍。

【问题讨论】:

  • 我想这会尽可能快。读写速度也受到使用的硬件技术的限制。
  • BufferedWriter 应该会提高性能 - 如果没有,您可以使用 BufferedWriter(Writer out, int sz) 构造函数

标签: java android filewriter printwriter bufferedwriter


【解决方案1】:

Android 与其他所有带有存储单元的设备一样,写入速度有限。

要加快文件写入和读取速度,您唯一能做的就是获得更好的存储单元(这在 Android 设备上并不容易,因为您不能将其拧开并更换单元)。

因此,在文件读写方面,您会受到硬件的限制。

【讨论】:

    【解决方案2】:

    每个内存都有特定的块和页面大小。由于闪存是如何写入的,因此是否将其写入小块很重要。

    这是在adb shell 中运行dd 的基准:

    sailfish:/storage/emulated/0 $ dd if=/dev/zero of=test bs=4k count=$((32*1024))                                                                                                                                                                                              
    32768+0 records in
    32768+0 records out
    134217728 bytes transferred in 0.521 secs (257615600 bytes/sec)
    

    1k 块的另一个:

    sailfish:/storage/emulated/0 $ dd if=/dev/zero of=test bs=1k count=$((128*1024))                                                                                                                                                                                           
    131072+0 records in
    131072+0 records out
    134217728 bytes transferred in 1.369 secs (98040707 bytes/sec)
    

    以小块的形式写入数据会使其慢近 3 倍。 我鼓励您对内存进行基准测试,看看您是否遇到了硬件限制。试验写缓冲区大小。如果在写入过程中您的内存确实变慢了,那么您就无能为力了。

    【讨论】:

      【解决方案3】:

      如需更快的file 读/写,请查看java.nio 包。

      这是一个很好的article关于java NIO,在这里你可以找到与IO包的比较

      【讨论】:

        【解决方案4】:

        试一试Okio。但不确定它是否真的更快。

        【讨论】:

          猜你喜欢
          • 2014-03-28
          • 2014-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多