打开文档导航

Pysolate与EAGER:应该怎么比较

结论

不能写“忽略AST解析后,Pysolate一定不比EAGER差”。更准确的是:

Pysolate保留EAGER能做的普通顺序执行路径,同时为满足显式authority和可丢弃条件的物理工作增加提前执行、fresh fan-out和backend重选机会;这些是额外的调度机会,不是对任意workload的wall-clock支配证明。

为什么不是必然不慢

即使不计AST分析,Pysolate仍可能支付:

  • Host contract与budget判断;
  • staging、receipt和logical join;
  • Host→Guest materialization/copy;
  • fresh Guest初始化与cleanup;
  • workspace attempt或backend transport;
  • speculative work最终未被使用的浪费。

EAGER若已经持有一个安全、热的persistent interpreter和目标对象,且不存在authority或state隔离问题,可能直接继续执行,开销更低。

Pysolate多出的优化空间

1. 不因“未来可能有副作用”而整体serial

Host可以只提前执行已经显式授权的read/decode/preparation。后续write、publish或unknown effect仍留在原Guest顺序中。系统不需要在“提前整个程序”和“所有工作都等到最后”之间二选一。

2. 物理工作可以失败或被丢弃

branch未走、提前异常、cancel或source不再匹配时,prepared result直接orphan;它没有自动取得logical effect地位,也不要求回滚Guest已经提交的effect。

3. fresh consumer与backend重选

结果或immutable baseline可以服务fresh consumer;native attempt结束后,无状态依赖的新request可以重新进入WASM。EAGER通常把优化与同一长期解释器状态绑在一起。

4. effect truth由Host持有

系统可以区分not-started、completed、ambiguous和terminal cleanup,因此只在能够证明安全时做fallback/retry;不是看到异常文本就重放。

性能判断式

对某个candidate,只有当下面的不等式成立时提前准备才有收益:

overlappable preparation
>
staging + join + fresh-start overhead + orphan risk

private-COW可以降低fresh-start的一部分,但它不是使提前执行合法的原因。

答辩短答

问:是不是理论上永远不比EAGER慢?

不是。我们没有证明universal dominance。Pysolate提供的是更细的安全调度空间:符合条件的physical work不必因为后面可能有effect就全部串行。固定实验展示了这些机会可以产生收益,但是否更快仍由lead、materialization、fresh-start和未命中率决定。