V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
retrocode
V2EX  ›  问与答

有人适配过老爷机吗? 见鬼了, 同一段 js 序列化代码 win10 工作机上执行只要 7 毫秒, 目标机(n 年前产/win7)上执行 500~600 毫秒, 慢了近百倍

  •  
  •   retrocode · 2023-06-28 18:42:51 +08:00 · 939 次点击
    这是一个创建于 542 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很简单的一条序列化代码,将缓存中的对象重新实例化成对象实例

    示例如下:

    const orderList:Order[] = List.map(o => Order.fromDb(o))
    

    Order 对象在实例化时会将对象挂载的各种属性统一递归实例化.

    开发机上测试 50 条也才不过 10ms, 整条算法走下来只有 100~130ms.

    上了测试机直接爆炸,单序列化那里 20 条数据就上 500ms 了, 整个流程走下来整体 3 秒起步.

    调试发现耗时全在实例化上了, 各处的 new 对象普遍慢了 10 倍.

    按理说不应该的, 我们嵌套的 webview2 定版.性能差距不应该有这么大的啊.

    头都要炸掉了, 还必须实例化, 后续算法是基于面向对象写的, 各个对象有挂载函数.

    4 条回复    2023-06-29 11:08:42 +08:00
    israinbow
        1
    israinbow  
       2023-06-28 19:40:08 +08:00 via Android
    适配过火箭用的 fpga 方案,用的是 20 年前的 javascript 引擎。

    考虑到 webview2 支持 7 的 109 版本运行时是今年年初发板的,对老旧系统的结束支持也提上议程 https://blogs.windows.com/msedgedev/2022/12/09/microsoft-edge-and-webview2-ending-support-for-windows-7-and-windows-8-8-1/#a11y-skip-link-content

    我想你已经知道解决方案了。
    retrocode
        2
    retrocode  
    OP
       2023-06-28 20:05:47 +08:00
    @israinbow #1 没懂啥意思=.= 我们目前用的就是 109 版本, 就是因为要适配 win7
    t133
        3
    t133  
       2023-06-29 09:14:45 +08:00 via iPhone
    老机器不支持 AVX?
    retrocode
        4
    retrocode  
    OP
       2023-06-29 11:08:42 +08:00
    @t133 #3 是的, 10 后的 U, 没有 AVX, 查了几天貌似没辙了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2691 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 07:48 · PVG 15:48 · LAX 23:48 · JFK 02:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.