webpack优化篇(四十二): 使用高版本的 webpack 和 Node.js

简介: webpack优化篇(四十二): 使用高版本的 webpack 和 Node.js

说明

玩转 webpack 学习笔记



使用 webpack 4

相比 webpack 3 构建时间降低了 60%-98%!

72c8eacb62f04ccda31621b3d9baa57b.png


使用 webpack4:优化原因


   V8 带来的优化(for of 替代 forEach、Map 和 Set 替代 Object、includes 替代 indexOf)

   webpack4 默认使用更快的 md4 hash 算法

   webpacks AST 可以直接从 loader 传递给 AST,减少解析时间

   使用字符串方法替代正则表达式


具体的可以参考:https://github.com/webpack/webpack/releases,然后找到 v4.0.0

d826612ef1904eb7a7874907145ef8ea.png


map perfermance


map 速度提升对比

对比版本如下:这里需要使用 nvm 工具,可以参考我之前的文章:怎么使用 nvm 控制 nodejs 版本切换?

02e050f3d5ac4164ba7f4c01f019a3d3.png



"use strict";
const runCount = 100;
const keyCount = 10000;
let map = new Map();
let keys = new Array(keyCount);
for (let i = 0; i < keyCount; i++) keys[i] = {};
for (let key of keys) map.set(key, true);
let startTime = process.hrtime();
for (let i = 0; i < runCount; i++) {
    for (let key of keys) {
        let value = map.get(key);
        if (value !== true) throw new Error(); 
    }
}
let elapsed = process.hrtime(startTime);
console.log(elapsed)
let [seconds, nanoseconds] = elapsed;
let milliseconds = Math.round(seconds * 1e3 + nanoseconds);
console.log(`${process.version} ${milliseconds} ms`);


860e468fc71d4621a1ff88f0d515c29d.png

89c3ddf3029843a4b09b9979ed9bd2ec.png

182b246178844149b5eb7500eaca2c71.png



对比 includes 跟 indexOf

编写 compare-includes-indexof.js 文件

const ARR_SIZE = 1000000;
const hugeArr = new Array(ARR_SIZE).fill(1);
// includes
const includesTest = () => {
    const arrCopy = [];
    console.time("includes");
    let i = 0
    while (i < hugeArr.length) {
        arrCopy.includes(i++)
    }
    console.timeEnd("includes");
}
// indexof
const indexOfTest = () => {
    const arrCopy = [];
    console.time("indexOf");
    let i = 0
    for (let item of hugeArr) {
        arrCopy.indexOf(item)
    }
    console.timeEnd("indexOf");
}
includesTest();
indexOfTest();



575951c26a334de9a9e6149ce92c7002.png


目录
相关文章
|
2天前
|
缓存 JavaScript 前端开发
介绍一下 JavaScript 中数组方法的常见优化技巧
通过合理运用这些优化技巧,可以提高 JavaScript 中数组方法的执行效率,提升代码的整体性能。在实际开发中,需要根据具体的业务场景和数据特点选择合适的优化方法。
10 5
|
7天前
|
JSON 监控 JavaScript
Node.js-API 限流与日志优化
Node.js-API 限流与日志优化
|
17天前
|
存储 JavaScript 前端开发
JavaScript垃圾回收机制与优化
【10月更文挑战第21】JavaScript垃圾回收机制与优化
24 5
|
20天前
|
JavaScript 测试技术 API
跟随通义灵码一步步升级vue2(js)项目到vue3版本
Vue 3 相较于 Vue 2 在性能、特性和开发体验上都有显著提升。本文介绍了如何利用通义灵码逐步将 Vue 2 项目升级到 Vue 3,包括备份项目、了解新特性、选择升级方式、升级依赖、迁移组件和全局 API、调整测试代码等步骤,并提供了注意事项和常见问题的解决方案。
|
26天前
|
JavaScript 前端开发 索引
JavaScript ES6及后续版本:新增的常用特性与亮点解析
JavaScript ES6及后续版本:新增的常用特性与亮点解析
23 4
|
4天前
|
JavaScript Linux iOS开发
详解如何实现自由切换Node.js版本
不同的项目中需要使用不同版本的 Node.js,有时旧项目需要旧版本,而新项目则可能依赖最新的 Node.js 版本
|
2月前
vite.config.js中vite.defineConfig is not defined以及创建最新版本的vite项目
本文讨论了在配置Vite项目时遇到的`vite.defineConfig is not defined`错误,这通常是由于缺少必要的导入语句导致的。文章还涉及了如何创建最新版本的Vite项目以及如何处理`configEnv is not defined`的问题。
97 3
vite.config.js中vite.defineConfig is not defined以及创建最新版本的vite项目
|
2月前
|
移动开发 前端开发 JavaScript
JS配合canvas实现贪吃蛇小游戏_升级_丝滑版本_支持PC端和移动端
本文介绍了一个使用JavaScript和HTML5 Canvas API实现的贪吃蛇游戏的升级版本,该版本支持PC端和移动端,提供了丝滑的转向效果,并允许玩家通过键盘或触摸屏控制蛇的移动。代码中包含了详细的注释,解释了游戏逻辑、食物生成、得分机制以及如何响应不同的输入设备。
57 1
JS配合canvas实现贪吃蛇小游戏_升级_丝滑版本_支持PC端和移动端
|
2月前
|
存储 缓存 JavaScript
JavaScript 中数组方法的常见优化技巧
JavaScript 中数组方法的常见优化技巧
|
1月前
|
JavaScript 算法 内存技术
如何降低node.js版本(nvm下载安装与使用)
如何降低node.js版本(nvm下载安装与使用)