You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Remove `QuickJsExecutor({ host: "process" })` and its process-hosted runner entrypoint. Use `host: "worker"` for local hosted QuickJS execution, or `@execbox/remote` for app-owned process, container, or VM boundaries.
Execbox turns host tool catalogs into callable guest namespaces, supports MCP wrapping on both sides of the boundary, and lets you place guest JavaScript where it fits your deployment: inline, behind a worker or child-process host, or across your own remote transport.
13
+
Execbox turns host tool catalogs into callable guest namespaces, supports MCP wrapping on both sides of the boundary, and lets you place guest JavaScript where it fits your deployment: inline, behind a worker host, or across your own remote transport.
|[`@execbox/quickjs`](./packages/quickjs/)|[](https://www.npmjs.com/package/@execbox/quickjs)| QuickJS executor for inline, worker, and process hosts |
20
+
|[`@execbox/quickjs`](./packages/quickjs/)|[](https://www.npmjs.com/package/@execbox/quickjs)| QuickJS executor for inlineand worker hosts|
21
21
|[`@execbox/remote`](./packages/remote/)|[](https://www.npmjs.com/package/@execbox/remote)| Advanced transport-backed executor for app-owned runtime boundaries |
| Process (ephemeral) | 202.37ms | 204.10ms | 207.70ms |
20
-
| Process (pooled) | 1.61ms | 2.92ms | 4.18ms |
21
19
22
20
### Notes
23
21
24
22
- On this machine, warmed pooled executors stayed close to QuickJS for trivial scripts.
25
-
- Ephemeral executors remained far slower than pooled executors because each execution still pays worker or process startup cost.
26
-
- Process pooled stayed low-latency in median terms, but its process startup path remained much more expensive than worker startup.
23
+
- Ephemeral executors remained far slower than pooled executors because each execution still pays worker startup cost.
27
24
28
25
---
29
26
@@ -36,12 +33,10 @@ Only pooled executors expose explicit `prewarm()`. QuickJS and ephemeral executo
36
33
| QuickJS (in-process) | 1.46ms | N/A | N/A |
37
34
| Worker (ephemeral) | 62.70ms | N/A | N/A |
38
35
| Worker (pooled) | 62.30ms | 1.81ms | 97.1% |
39
-
| Process (ephemeral) | 202.51ms | N/A | N/A |
40
-
| Process (pooled) | 202.31ms | 2.32ms | 98.9% |
41
36
42
37
### Notes
43
38
44
-
- True `prewarm()` delivered the intended first-request behavior in this run: pooled worker and pooled process executors dropped from shell-plus-guest startup latency to low-single-digit warm execution latency.
39
+
- True `prewarm()` delivered the intended first-request behavior in this run: pooled worker executors dropped from shell-plus-guest startup latency to low-single-digit warm execution latency.
45
40
-`prewarm()` pays the host-shell and guest-startup path before live traffic arrives.
46
41
47
42
---
@@ -92,13 +87,11 @@ The pooled benchmark factories in this suite use a fixed `pool.maxSize: 2`.
- QuickJS stayed the strongest path for trusted, in-process workloads at low and high concurrency in this run, while worker pooled edged ahead at concurrency 2.
100
-
- Worker and process pooled executors paid visible queueing once demand moved past the benchmark pool size.
101
-
- Process pooled stayed competitive, but it still trailed worker pooled at every tested concurrency level.
94
+
- Worker pooled executors paid visible queueing once demand moved past the benchmark pool size.
102
95
103
96
---
104
97
@@ -109,21 +102,16 @@ The pooled benchmark factories in this suite use a fixed `pool.maxSize: 2`.
@@ -144,13 +132,11 @@ This suite only measures the parent Node process. It does not attempt to attribu
144
132
### High-value takeaways from this snapshot
145
133
146
134
- QuickJS remained the lowest-latency option for trusted, in-process workloads on this machine.
147
-
- True `prewarm()` delivered the intended first-request benefit for pooled worker and pooled process executors.
135
+
- True `prewarm()` delivered the intended first-request benefit for pooled worker executors.
148
136
- Worker pooled remained the strongest general-purpose local trade-off between isolation, throughput, and tail latency.
149
-
- Process pooled stayed viable when process isolation matters, but it still trailed worker pooled on throughput and tail latency.
150
137
- Ephemeral modes remained dramatically slower than pooled modes and are best reserved for cases that need a fresh host boundary per execution.
151
138
152
139
### What this snapshot does not prove
153
140
154
141
- It does not prove exact throughput rankings for every workload or host. The concurrency and tool-call suites are still sensitive to local scheduler noise.
155
-
- It does not prove memory behavior for `QuickJsExecutor({ host: "process" })`, because the memory suite intentionally avoids reporting child-process RSS as if it were host-process memory.
156
142
- It does not measure `RemoteExecutor`, because remote performance depends on the caller-owned transport and remote runtime deployment.
0 commit comments