开发突围:该换电脑了

背景

最近引入一个开源的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训练)

后记

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

相关推荐
leluckys1 小时前
flutter 专题 九十八 Flutter 1.7正式版发布
flutter
努力往上爬de蜗牛1 小时前
react学习1.搭建react环境
javascript·学习·react.js
JaxNext1 小时前
成为谷歌开发者专家,也成为儿时心中的侠客
前端·程序员·开源
黎明故日2 小时前
Flutter 谷歌地图与页面滑动冲突
flutter
顾林海2 小时前
Flutter Dart 泛型详解
android·前端·flutter
郝晨妤2 小时前
【鸿蒙】封装日志工具类 ohos.hilog打印日志
flutter·华为·harmonyos·鸿蒙
leluckys2 小时前
flutter 专题 一百零三
flutter·macos·cocoa
唐某人丶2 小时前
如何优化 React 组件?
前端·react.js·前端框架
Shawn5903 小时前
如何使用useCallback优化React性能?
前端·react.js