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

如何提高 Java 使用第三方库读写文件的效率

  •  
  •   cruii · 2020-06-12 11:33:17 +08:00 · 2153 次点击
    这是一个创建于 1627 天前的主题,其中的信息可能已经有所发展或是发生改变。

    说实话,我是没有抱着能拿到答案的心态来的,但还是得吐槽一下

    给客户打包了一个 SDK,里面封装了一些对 word 文档操作的接口 结果客户说,在操作一个 5M 大小的 Word 文档时,要把整个流程控制在 50 毫秒左右,不能超过 100 毫秒。

    在这个 SDK 中实际操作 Word 还是调用的第三方库 aspose-words

    我本地测试了 100 次,结果都是 1 秒起步

    请问大佬们,这真的能实现吗,能有什么思路。aspose-words 的接口也是固定的,也不可能修改里面的算法。

    7 条回复    2020-06-13 03:30:28 +08:00
    undownding
        1
    undownding  
       2020-06-12 13:22:36 +08:00   ❤️ 1
    问题不是出在读写速度上,而是那个裤子的解析(?)速度上吧。

    感觉要不提前加载,不然也没别的办法了。
    dallaslu
        2
    dallaslu  
       2020-06-12 13:36:50 +08:00   ❤️ 1
    攒 20 个文件多线程操作,假设共用 1 秒,平均就 50 毫秒了。

    客户用 SDK 操作 Word,第一步得先选择文件吧,然后在点按钮时才真正调用 SDK 吧?改 SDK 接口,对外暴露俩方法,一个验文件,一个做解析。然后验文件时就开始预处理。

    或者换库。
    arrow8899
        3
    arrow8899  
       2020-06-12 13:40:32 +08:00   ❤️ 1
    profile 看下是哪个步骤耗时多,如果第三方库不能看源码,那可以考虑换个开源的库,比如 apache poi,而且这个还跟你硬盘的读写速度和 CPU 处理能力有关,你让你客户报一下机器配置,和你自己的对比下。
    kop1989
        4
    kop1989  
       2020-06-12 13:45:20 +08:00   ❤️ 4
    5MB 的 word,如果算 50ms 加载完毕的话,都要 100MB/s 了,都逼近机械硬盘的读取速度了。这还仅仅是 IO,还没算处理。
    dallaslu
        5
    dallaslu  
       2020-06-12 14:02:55 +08:00   ❤️ 1
    另外 aspose-words 这个库是不是底层靠调用在线接口实现的啊?如果是的话,这边建议客户拉个专线呢
    xyjincan
        6
    xyjincan  
       2020-06-12 23:54:31 +08:00 via Android
    要做成服务,不能让 jvm 每次都加载着一大堆类,多看看各种库的特点找合适的
    594duck
        7
    594duck  
       2020-06-13 03:30:28 +08:00 via iPhone
    @kop1989 老哥思路清晰。5M 的 xml 文件序列化一下多少时间。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:06 · PVG 19:06 · LAX 03:06 · JFK 06:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.