javascript - 在 JavaScript 中将 forEach、map、filter 和 for of 转换为基于长度的 for 循环

标签 javascript webpack micro-optimization

我有一个 WebGL 项目,其中每个微观优化都很重要。为了便于阅读,我使用 .forEach、.map、.filter 和 for of 循环,但由于 performance reasons,我想在我的生产代码中将它们转换为基于简单(反向)长度的 for 循环。 。 您能否建议如何使用 Webpack 实现这一目标?我对这个主题的最佳实践很好奇。

最佳答案

事实证明,有两个 Babel 插件可以很好地完成这项工作。

在我的配置中,我使用 Webpack 和 ts-loader 来转译 TypeScript。为了在保留 ts-loader 的同时使用这些 Babel 插件,我链接了两个加载器,因此 Babel 插件将优化 ts-loader 产生的 js 代码。

webpack.config.js:

{
    test: /\.tsx?$/,
    use: [
        { // babel-loader runs second and receives output of ts-loader
            loader: 'babel-loader'
        },
        { // ts-loader runs first
            loader: 'ts-loader',
            options: {
                // ts-loader options
            },
        },
    ],
},

.babelrc:

{
  "presets": [],
  "plugins": [
    "@babel/plugin-transform-for-of",
    "babel-plugin-loop-optimizer"
  ]
}

不幸的是,第二个插件没有维护,它们都不会转换为基于反向索引的循环。人们可以发布一个插件来在一个地方解决所有这些问题。

关于javascript - 在 JavaScript 中将 forEach、map、filter 和 for of 转换为基于长度的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59388617/

相关文章:

c - 以下两种情况在性能上有什么区别吗?

javascript - 循环遍历 localStorage 并在单击时显示特定值

javascript - control.style.display ='none' 问题;仅在 IE6 中

angular - JSON 中位置 437 的意外标记 }

javascript - 使用 webpack 包含 Bootstrap

assembly - avx指令中的源寄存器何时可以重用

java - 如何从 JavaScript 调用带有 JSP Servlet 参数的操作?

javascript - 取消选中特定行中的复选框的语法是什么?

angular - VS 2017 的 .net Core Webpack 发布失败

C++:if 内部循环的性能影响