Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Component Size & Performance: JCO/SpiderMonkey vs QuickJS

未关闭
#291 9 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
冷清
技术栈
javascript, rust, wasm

调研方向

复现 JCO、带有 weval/aot 的 JCO 以及使用 QuickJS 的 Rust 的三个已报告组件大小、fib(40) 计时和启动时代码生成时间。issue 未列出任何文件、测试或入口点,因此首先请求或查找承诺提供的代码示例,并检查是否由 SpiderMonkey 导致。完成标准是解释这种差异,或确定一个具体的优化机会。

由索引模型根据 Issue 内容生成。

描述

Hi there,

Let me start by saying that I'm missing a lot of context and that my approach is extremely naive, so please tell me to bugger off. Yet, I would still like to better understand the rational or state-of-the-world.

I'm playing around with various WASI components, mostly in Rust and JS. I did certainly notice the chunky component size of my JS components whenever wasmtime had to recompile them. I didn't think too much of it, thinking that's just the price to pay for bundling an interpreter. However, eventually I built a rust WASI component bundling QuickJS (via the rquickjs crate), which turned out to be slightly faster and significantly smaller. For comparison:

  1. JCO => 13M
  2. JCO + weval/aot => 29M
  3. Rust + QuickJS => 1.9M

Running a naive fibonacci implementation just to get a sense of performance, I get for fib(40):

  1. JCO => 45s
  2. JCO + weval/aot => 29s
  3. Rust + QuickJS => 26s

And startup codgegen/compile times are hugely different roughly propotional to the difference in component size.

I've no clue if this actually SpiderMonkey or if there's something else going on, however I didn't expect the difference to be quite so substantial. Could you help me understand what I'm missing or is this an opportunity?

Thanks,
Sebastian

EDIT: I'm happy to back this up with code-examples, I mostly just wanted to reach out and see if this is something you're aware off or have seen before.

主要语言
Rust
星标
392
派生
54
平均合并
2 天 18 小时
30 天内合并 PR
3

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

bytecodealliance/ComponentizeJS 的其他 Issue

查看 bytecodealliance/ComponentizeJS 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。