AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
您的機器上,網頁引擎每秒可繪製多少個精靈與 3D 立方體以達 60 fps?LittleJS、PixiJS、Three.js、PlayCanvas、Phaser 與 Babylon.js,於 WebGL 與 WebGPU 上。執行測試並分享結果。
AI 翻譯
How many sprites and 3D cubes can a web engine draw at 60 fps on your machine? LittleJS, PixiJS, Three.js, PlayCanvas, Phaser and Babylon.js, on WebGL and WebGPU. Run it and share your results.
開發工具JavaScript · HTMLGitHub @KilledByAPixel上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
How many moving sprites and 3D cubes can a web engine draw while holding 60 fps, on your machine?
The two scenes, shown here with 2,000 objects each. Every engine draws exactly the same picture; the benchmark keeps adding objects until the engine can no longer hold 60 fps.
Engines compared: LittleJS, PixiJS, Three.js and PlayCanvas, plus an extended set with Phaser, Babylon.js and the WebGPU renderers of Pixi and Three.檢視完整 README ↗How many moving sprites and 3D cubes can a web engine draw while holding 60 fps, on your machine?
The two scenes, shown here with 2,000 objects each. Every engine draws exactly the same picture; the benchmark keeps adding objects until the engine can no longer hold 60 fps.
Engines compared: LittleJS, PixiJS, Three.js and PlayCanvas, plus an extended set with Phaser, Babylon.js and the WebGPU renderers of Pixi and Three.
This benchmark was started by the author of LittleJS, so read it with that in mind. Every scene, the measurement code and the raw results are here so anyone can check them, rerun them, or improve a scene.
On the one machine tested so far (see RESULTS.md), LittleJS was comparable to the fastest paths of the other engines in these tests, and faster in several. That is one machine and two simple workloads. Results on your hardware may differ, and we would like to see them: see Submit your results.
Each engine draws the exact same scene from the same seeded simulation. The benchmark raises the object count until the median frame no longer holds 60 fps. It reports that count ("max N") and the engine's render CPU time per object.
Each engine is tested on its normal path and its fastest documented path. For example:
Sprite and ParticleContainerMesh and InstancedMeshdrawTile and glDrawapp.update and app.render, which its typings mark internal. That is the only way to render exactly once per frame.createInstance scene uses its documented freezeActiveMeshes optimisation. Every cube's transform still updates every frame.SpriteGPULayer) re-uploads its whole buffer each frame; that is how the layer is built.Think a scene isn't as fast as its engine allows? Please open an issue or a pull request. Improvements from engine maintainers are especially welcome.
In your browser, nothing to install: open https://killedbyapixel.github.io/webgl-engine-bench/, keep the tab visible, click Run, then Download JSON. A browser run can't record your CPU model, so please mention it when you submit.
With Node, for the most exact numbers: you need Node 21+ and Chrome, on a machine that is otherwise idle.
npm install
npx playwright install chromium
npm run bench:quick # about 5 minutes, rough numbers
npm run bench # about 35–40 minutes, 3 repeats, the numbers to share
Add --extended to include Phaser, Babylon.js and the other WebGPU scenes, for example npm run bench:quick -- --extended.
To run it by hand in any browser: npm run serve, then open http://localhost:8121.
RUN.md has the full procedure. Please read its idle-machine checklist: keep the display awake, close other apps, and don't cover the browser window.
Run the full benchmark. The optional label names the file:
npm run bench -- --label my-laptop
Print a summary of your results file:
npm run summary -- results/<your-file>.json
Open a Submit results issue. Paste the summary and attach the .json file. Or open a pull request that adds the file to results/ and runs npm run results to regenerate RESULTS.md.
Results record your CPU, GPU, OS and browser. They never record your computer's name.
scenes/: one file per engine and variantharness/: the shared simulation, the measurement loop and the runnertools/: run, verify, summary and vendor scriptsvendor/: pinned engine builds; exact versions are in vendor/versions.json, licences in vendor/LICENSES/results/: raw result filesnpm run verify re-checks that every scene draws the same thing. npm test runs the unit tests.
MIT; see LICENSE. The vendored engines keep their own licences; see vendor/LICENSES.