Hasty Briefsbeta

双语

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交互。