V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
paparika
V2EX  ›  Android

Android 读取大文件最佳实践?

  •  
  •   paparika · 2017-12-29 16:57:38 +08:00 · 9985 次点击
    这是一个创建于 2539 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前有一个需求,读取一个大文件里面的数据,提取出连续 n 个字节数据的最大/最小值,求最佳实践?
    1.单线程+MappedByteBuffer
    2.多线程+MappedByteBuffer
    3.其他?

    理论上多线程应该优于单线程,不过多线程会影响缓存命中
    9 条回复    2018-01-01 17:22:59 +08:00
    paparika
        1
    paparika  
    OP
       2017-12-29 17:01:49 +08:00
    补充一下,没有 race condition
    facetest
        2
    facetest  
       2017-12-29 18:37:19 +08:00 via Android
    写段代码测试一下应该不难吧?
    forestyuan
        3
    forestyuan  
       2017-12-29 22:12:45 +08:00
    瓶颈应该在 IO 上,估计单线程和多线程差别不大
    jameslan
        4
    jameslan  
       2017-12-30 11:23:20 +08:00 via Android
    io 密集操作你跟我说多线程优于单线程?
    crayygy
        5
    crayygy  
       2017-12-30 11:33:12 +08:00 via Android
    试试用 JNI ?
    paparika
        6
    paparika  
    OP
       2017-12-30 20:19:52 +08:00
    @jameslan 多线程可以多抢时间片,嘿嘿
    paparika
        7
    paparika  
    OP
       2017-12-30 20:21:25 +08:00
    实测了一个 300M 的文件,2 比 1 能省一半时间还多
    ryd994
        8
    ryd994  
       2017-12-31 02:28:46 +08:00 via Android
    @paparika block scheduler 直接给你重排成正常顺序
    paparika
        9
    paparika  
    OP
       2018-01-01 17:22:59 +08:00
    @ryd994 什么意思?愿闻其详
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3117 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:53 · PVG 12:53 · LAX 20:53 · JFK 23:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.