【问题标题】:Javascript Efficiency with Constants passed as Parameters?常量作为参数传递的 Javascript 效率?
【发布时间】:2011-02-18 16:43:55
【问题描述】:

我有一个通用的 JavaScript 问题。我会给你我的情景,然后问你这个问题。

场景

我正在制作一张(目前)超过 3000 行的表格,并且它每天都在增长 5-10。我正在使用 javascript 插件来设置此表的样式并添加有用的功能。目前完全加载页面需要 15 秒,之后一切运行顺利(排序、分页等)。不过,这是一个非常缓慢的初始加载。该插件提供了一种减少 DOM 解析的方法,您可以向它传递要放置在表格中的信息数组,我对此非常感兴趣。但是,我想尽可能快,因为仍然会有一个 3000 行的数组(每行有 11 列,平均 10 个字符)。

问题

使用 JavaScript const 存储这个巨大的数组会不会快很多?具体来说,JavaScript 是否知道在作为参数传递时不要将 const 放入堆栈?

此外,这对 JavaScript 来说是否太多了?我是否应该放弃这个想法并立即开始使用 AJAX(这意味着功能要慢得多,但页面加载要快得多)?

谢谢!

【问题讨论】:

  • 如果是我的网站,我会使用 AJAX 来避免往返这么多数据。
  • 1) 什么是“javascript 插件”? 2) 如果您正在处理 DOM,则不再是“这对于 JavaScript 来说是否太多了?”的问题。而是“对于浏览器的 DOM 实现来说,这是否太多了?”。 3)我喜欢空中报价。
  • 这是我正在考虑使用的:http://www.datatables.net/examples/data_sources/js_array.html
  • @Roatin:javascript 数组将在内部使用,并且仅根据需要创建 DOM 对象,因此即使一次 100 行也会很快(比初始 3000+ 快得多,然后将其缩小到 100 )
  • 请注意,“const”甚至不适用于所有浏览器,尤其是 IE。

标签: javascript arrays performance constants


【解决方案1】:

因为您说加载页面后交互很快,我猜您最大的瓶颈是通过网络传输数据。

我会将所有内容作为 JSON(使用 gzip 压缩)发送,这是非常轻量级快速加载。

我认为样式应该使用 CSS 而不是 JS。此外,如果您想要最好的 UX,请使用 less(1-200 个元素)初始化您的表格,然后处理其余部分。如果你在一开始就展示一些东西,对用户来说会更好。

存储数组不是问题,因为GC 会清除它。

【讨论】:

  • 我刚刚尝试使用巨大的 JS 数组来实现,并将页面加载时间从 15 秒缩短到 6 秒,但这仍然不够快。我现在要使用 AJAX 和 JSON。谢谢 =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多