Electron实战系列八:性能优化

本文介绍了Electron应用的三个优化阶段:启动时通过v8-compile-cache缓存编译代码以提高启动速度,优先加载核心功能并动态加载非核心;运行时通过Web性能优化渲染进程和主进程瘦身,如将计算密集任务分离到子进程。
摘要由CSDN通过智能技术生成

3个阶段:

. 构建优化

②. 启动时优化

③. 运行时优化

1. 启动时优化:

. 使用v8-compile-cache缓存编译代码

②. 优先加载核心功能,非核心功能动态加载

③. 使用多进程,多线程技术

④. 采用asar打包:会加快启动速度

⑤. 增加视觉过渡:loading + 骨架屏

(1). 使用v8-compile-cache缓存编译代码:

. 使用V8缓存数据,为什么?
    a. 因为electorn使用V8引擎运行js,V8运行js时,需要先进行解析和编译,再执行代码
    b. 解析和编译过程消耗时间多,经常导致性能瓶颈
    c.V8缓存功能,可以将编译后的字节码缓存起来,省去下一次解析、编译的时间

②. 主要使用v8-compile-cache来缓存编译的代码:
    a. 在需要缓存的地方加一行
       require('v8-compile-cache'). 文档:
    https://www.npmjs.com/package/v8-compile-cache(opens new window)

(2). 优先加载核心功能,非核心功能动态加载:

伪代码如下
export function share() {
  const kun = require('kun')
  kun()
}

2. 运行时优化:

. 对渲染进程 进行 Web 性能优化

②. 对主进程进行轻量瘦身

(1). 对渲染进程进行Web性能优化:

用一个思维导图来完整阐述如何进行Web性能优化,如下图所示:


(2). 对主进程进行轻量瘦身:

核心方案就是将运行时耗时、计算量大的功能交给新开的node进程去执行处理

伪代码如下:

const { fork } = require('child_process')
let { app } = require('electron')

// 将耗时、计算量大的功能,放在server.js,再fork到新开node进程中进行处理
function createProcess(socketName) {
  process = fork(`xxxx/server.js`, [
    '--subprocess',
    app.getVersion(),
    socketName
  ])
}

const initApp = async () => {
  // 其他初始化代码...
  let socket = await findSocket()
  createProcess(socket)
}

app.on('ready', initApp)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值