Open sonofmagic opened 9 months ago
我把编写 swc 插件这个目标给去除了,原因是我基于 @ast-grep/napi
实现了一个 beta
版本,然后发布了。
结果跑 e2e
测试的时候,发现比原先的 babel
还要慢???!!!
然后,为了找到原因,我去看了 ast-grep
的源代码,并跑了一下它自带的 bench
来做基准测试
测试脚本不是我写的,是直接跑 https://github.com/ast-grep/ast-grep/tree/main/benches 这里的测试脚本
测试设均为 Mac Book Pro m1 , 测试分为对 同步 和 异步 API 进行测试,
测试解析的 js 文件对象为 超小
,小
, 中等
,巨大
四种体积,下方结果的 ops
数据越大越快。
测试结果如下:
用 rust
写的工具,异步的性能要比同步好一点,同时处理的文件越小,性能越快。
但是,小文件的解析本身也不怎么耗时间呀?
而且,看到 swc
这样的测试结果,我不由得对 rust
是前端新基建的说法产生了怀疑。
当然,如果你测试的结果有所不同,或者是有其他的异议,欢迎和我进行交流。
找了另外一台 win64 机器做测试,配置比 mac book pro稍次,测试结果如下
ast-grep 作者 HerringtonDarkholme
大佬给出的测试结果:
https://docs.google.com/spreadsheets/d/1oIRXDaJ-EnjKz8GKpmUjVwh_FNw4Nsf6mbA0QPCiTh0/edit#gid=0
也同样应征了这个结果
转眼这个项目已经 2 年多了,算是我这么多开源里面,目前唯一火起来,有人用的吧(笑~),秉着不抛弃不放弃用户的原则,和目前所存在的问题,我大概制定了一下未来的技术规划以及立下一个 Flag:
- 编写 swc 插件,使用 swc 来替换掉 babel ,因为 babel 在项目大的时候,性能比较低,可能一个大js文件 parse 就要 200-300ms,这个是缓存也无法解决的问题,所以需要对 js 方面的转义,以及相关的包 “锈化”(具体原因见下)ast-grep
(rust编写) 支持, 通过基准测试,在项目中,平均速度大约比babel
快2
倍左右 (3.1.0 版本支持 2024/03/23) https://github.com/sonofmagic/weapp-tailwindcss/pull/28310
个贡献者(6/10)
4
篇文章给weapp-tailwindcss
(2/4)
used by
开源项目超过1k
,(目前2
年不到400
,因为小程序开源项目本来就少)tailwindcss@4.x
, 这个是新的rust
引擎taro rn
,这个也是很多用户都在提的 https://github.com/sonofmagic/weapp-tailwindcss/issues/262目前想到的就这些,希望我们能达成目标!
贡献者们快来啊,有啥不懂的,我都事无巨细的解释给你们听!
贡献指南: https://weapp-tw.icebreaker.top/docs/how-to-contribute