开发突围:该换电脑了

背景

最近引入一个开源的AI项目(使用的技术栈相对比较新)进行二次开发,在我的工作本上启动开发很正常,在我之前老工作本上得启动多次才能成功,在我的一个同事工作本上发现根本启动不起来。

js 复制代码
  "dependencies": {
     "antd": "^5.12.7",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "i18next": "^23.7.16",
     "umi": "^4.0.90",
     "tailwindcss": "^3",
   },
   "engines": {
    "node": ">=18.20.4"
   }

问题分析

同时对依赖包版本、兼容性、node_modulesnpm cache等可能涉及的因素排查了一遍,发现始终无法解决问题,又按照AI提出的一些方案进行插件配置也无法解决问题,折腾了两天也无法投入开发。

按照现象来看,node版本一致、依赖包版本一致、甚至下载的node_modules都是用我提供的压缩包,唯一区别就是工作本不一样。我的工作本是最近国补新买的电脑,之前老工作本用了五年性能有些跟不上,同事的工作本也相对比较老旧。错误日志提示generate failed after 5 second,大概率是执行某个任务时超时了。

我猜想大概率是电脑性能跟不上导致的问题,于是我操作关了其它额外的所有应用程序,也暂停了火绒的自动检索,尝试把CPU、内存全部压到Vscode应用上,结果和我猜想的一致,启动成功了。

回溯开发

同事遇到的这个问题其实比较典型,在用老工作本时因为可能涉及前端项目、Java项目、Flutter项目等多个业务开发,多开编辑器的情况下就是很卡顿,不过并没有直接错误的场景。自从使用了新的工作本才发现,以前难以解决优化的问题已经消失了。

npm run build

曾经很长一段时间,我受控于前端项目启动、build、热更新都很慢,我还专门在webpack配置、插件性能分析、CPU多核利用(happyThreadPool)等多维度进行优化,除过打的包由110Mb 降至 23MB外,速度上基本没有明显提升。

js 复制代码
const happyThreadPool = HappyPack.ThreadPool({ size: require('os').cpus().length });

config.plugin('HappyPack').use(HappyPack, [
  {
    id: 'js',
    loaders: ['babel-loader'],
    threadPool: happyThreadPool,
  },
]);

因为happyThreadPool的使用,导致在执行npm run build时,电脑很难在同步执行其它任务,同事曾经调笑到:咱们项目进入接水时间,因为build用时够来回去水房接水

对比webpack5在不同环境的构建表现:

特性 旧设备 新设备
持久缓存构建 78s 14s
并行压缩 45s 7s
模块热替换 9s 0.3s

通过对比webpack构建日志发现:

  • 旧设备冷构建平均耗时4分28秒(含babel转译、css压缩、tree shaking)
  • 新设备同样任务仅需47秒,热更新响应速度从8-12秒提升至<1秒

使用新工作本后,速度提升了一个维度,我之前绞尽脑汁想要优化的开发速度问题解决了。

复制粘贴

开发过程中,有一个很常见的场景就是文件夹复制粘贴,因为原始项目的问题,项目的依赖包经常安装失败。以这个项目为模板做新项目时经常涉及对node_modules的复制粘贴。在大多数时候node_modules的依赖包不止文件大、文件数量多(4w+)、目录层级多,无论对其进行压缩、解压迁移,或者直接迁移都很慢,老工作本一般需要花费小半个小时。

自从使用新工作本后,发现以最耗时的直接复制粘贴方式也只需要最多3分钟就可以完成。曾经受控的搭建基本环境慢的问题竟然没了。

在迁移node_modules时:

  • 旧SSD硬盘解压4.2万文件耗时26分钟
  • NVMe SSD仅需2分15秒完成
    实测证明,4K随机读写性能(旧设备87 IOPS vs 新设备580K IOPS)直接影响依赖安装效率

多开应用

曾经的开发,因为vscode本身集成了很多插件,应用占据内存一致很高,为了避免出现卡顿情况。开发基本都是单开工作项目,即使有协同项目也分次修改。更别提同时开发前后端,同时开启ideavscodechrome了。同时开发电脑基本会被拉爆,打字都开始延迟。 当同时开启:

  • IDEA运行Spring Boot微服务(占用4GB)
  • VSCode调试React组件(占用3GB)
  • Chrome运行E2E测试(占用2.5GB)
    旧设备内存占用率持续>90%,触发频繁的swap交换,导致IDE输入延迟高达800ms

而现在idea (Java开发)、vscode (React开发)、Android Studio (Flutter开发)chrome、DevEco Studio(鸿蒙开发)的多开应用场景下也能开发自如。

开发视角

AI辅助开发

站在我开发的角度来看,随着AI辅助开发的不断接入,开发人员的多线程工作方式将变得越来越普遍,AI在分析需求生成业务代码的过程中本身也消耗大量电脑性能。AI辅助开发效率上的提升我已经能直观感受到了,因为我同时使用了ROO CODEMarsCode AIGitHub Copilot进行AI辅助开发,开发效率提升60%以上,但是电脑性能的瓶颈可能是影响我开发效率的一个关键因素。

使用GitHub Copilot时,代码建议响应时间:

  • 旧设备:1200-1500ms
  • 新设备:200-300ms
    大语言模型的本地化部署(如CodeLlama 7B)需要至少24GB显存,这直接淘汰了仅配置4GB显存的旧显卡

第三方插件

另一方面,一些开发第三方库的插件因为版本的不断升级,在运行构建过程中对电脑性能也有了要求,回头看一下开头的问题也能发现这一现象。新的项目、新的技术的更迭,反向在推动硬件设备更迭升级。

开发全栈化

随着AI技术普及、企业降本增效,开发人数会减少,但对留下的开发人员来说,技术多趋向于全栈化。全栈意味着电脑上会下载更多的关联应用,同时运行的应用也会更多,对电脑性能也会提出新的挑战。

根据2024年StackOverflow调研,现代全栈开发推荐配置:

  • CPU:12核/16线程以上(应对容器虚拟化)
  • 内存:64GB DDR5(满足微服务+AI模型驻留)
  • 存储:2TB PCIe4.0 SSD(4K随机读写>700K IOPS)
  • GPU:12GB显存(支持本地AI训练)

后记

申明一下,不是想推广什么电脑,标题只是想醒目点,只是单纯根据自己最近换电脑经历总结的。

相关推荐
zwjapple6 小时前
“ES7+ React/Redux/React-Native snippets“常用快捷前缀
javascript·react native·react.js
肥肥呀呀呀10 小时前
flutter 的热更新方案shorebird
flutter
snail20121112 小时前
Flutter接入ProtoBuff和原生Android通信【性能最优】
android·flutter
程序猿阿伟14 小时前
《让歌声跨越山海:Flutter借助Agora SDK实现高质量连麦合唱》
flutter
ZHOU_WUYI16 小时前
用react实现一个简单的三页应用
前端·javascript·react.js
郝郝先生--17 小时前
Flutter 异步原理-Zone
前端·flutter
whatever who cares17 小时前
React 中 useMemo 和 useEffect 的区别(计算与监听方面)
前端·javascript·react.js
老兵发新帖18 小时前
前端知识-hook
前端·react.js·前端框架
一直在学习的小白~19 小时前
HTML字符串转换为React元素实现
前端·react.js·html
sunbyte19 小时前
Three.js + React 实战系列 - 客户评价区细解教程 Clients 组件✨(回答式评价 + 评分星级)
开发语言·javascript·react.js