Are you telling me a readonly property is wrecking my performance?
4 days ago
- #performance
- #web-development
- #javascript
- 在Letta Desktop中发现了一个性能问题:随着使用量增加,产品速度变慢,最初怀疑是由于代码未优化所致。
- 根本原因被确定为使用了'el.scrollTop = el.scrollHeight;'来在新消息时滚动UI,假设scrollHeight是一个静态且高性能的只读属性。
- 实际上,scrollHeight是动态的,并在访问时重新计算,当在高消息流期间频繁更新时会导致速度变慢。
- Chromium的实现显示scrollHeight会触发布局更新,使其在频繁使用时性能不佳。
- 解决方案是使用一个非常大的数字代替精确计算scrollHeight,依赖于边界行为。
- 关键建议:只读属性可能是动态的并影响性能,尤其是在发生明显变化时。
- 教训包括质疑关于属性性能的假设,以及优化UI交互。