level 9
qweytr_123
楼主
怎么说呢,从前我一直觉得风后很有道理,毕竟后端就是快,无脑快
在优化NpcScan的时候……我终于意识到了什么。
已知大概有7000个class要传,传过来之后要实例化几万个字符串
后端的确快,但后端快的代价是前端卡顿。
曾经风后说,“前端就应该异步啊,写成同步不符合编码规范”
emmm,几万个需要更新的字符串(物品,可能不止几万),要不然异步加载,每帧加载若干个,花费好几秒钟加载完成,在此期间需要冻结NpcScan的一切功能,否则前端逻辑会不准确(比如搜不到汗血宝马的原因是汗血宝马没有更新)
要不然卡顿几十到几百毫秒(视优化等级而定,原NpcScan几百ms,现在几十ms)等待所有数据更新完毕
要不然后端执行一切运算但是翻页时候需要从后端重传全部翻页数据……于是一次长卡顿变成每次翻页的短卡顿。
当然,理论上有万能解法避免上述一切缺点,但万能解法有一个后遗症,就是,程序员花费在编写万能解法上的时间,严格大于,其他所有人能因万能解法节省的时间的和。
不得不说风后的用心真的良苦……毕竟,风后的后端,的确快到亲🐴上天
但是,这里的快是以前端变卡为代价的。
就比如,打开所有界面,只要界面的人一多,就会卡。
卡的道理非常简单:
前后端的分离增加了开销。
你永远需要做一个,我在NpcScan中遇到的三选一
而本来你根本不需要选。
没有后端,最差最差的编程习惯,也能保证200ms刷新出50个NpcScan条目
加上后端,会变快多少,我不知道
我只知道,序列化与反序列化加起来基本上需要1秒。
2023年04月05日 10点04分
1
在优化NpcScan的时候……我终于意识到了什么。
已知大概有7000个class要传,传过来之后要实例化几万个字符串
后端的确快,但后端快的代价是前端卡顿。
曾经风后说,“前端就应该异步啊,写成同步不符合编码规范”
emmm,几万个需要更新的字符串(物品,可能不止几万),要不然异步加载,每帧加载若干个,花费好几秒钟加载完成,在此期间需要冻结NpcScan的一切功能,否则前端逻辑会不准确(比如搜不到汗血宝马的原因是汗血宝马没有更新)
要不然卡顿几十到几百毫秒(视优化等级而定,原NpcScan几百ms,现在几十ms)等待所有数据更新完毕
要不然后端执行一切运算但是翻页时候需要从后端重传全部翻页数据……于是一次长卡顿变成每次翻页的短卡顿。
当然,理论上有万能解法避免上述一切缺点,但万能解法有一个后遗症,就是,程序员花费在编写万能解法上的时间,严格大于,其他所有人能因万能解法节省的时间的和。
不得不说风后的用心真的良苦……毕竟,风后的后端,的确快到亲🐴上天
但是,这里的快是以前端变卡为代价的。
就比如,打开所有界面,只要界面的人一多,就会卡。
卡的道理非常简单:
前后端的分离增加了开销。
你永远需要做一个,我在NpcScan中遇到的三选一
而本来你根本不需要选。
没有后端,最差最差的编程习惯,也能保证200ms刷新出50个NpcScan条目
加上后端,会变快多少,我不知道
我只知道,序列化与反序列化加起来基本上需要1秒。