MérésekBenchmarks
Ez az oldal azért van, hogy a többi szám hihető legyen. Minden futást egy független, a csapat által soha nem látott teszt ellenőriz – és a rossz eredményeket is ide írjuk.
This page exists so the other numbers can be trusted. Every run is checked by an independent test the team never sees – and the bad results go here too.
Hogyan mérünkHow we measure
A mérőrendszer rögzített feladatokon futtatja a teljes FRST-csapatot, pontosan úgy, ahogy egy felhasználó tenné. A feladat szövegében le van írva az interfész (útvonalak, mezőnevek, válaszformák). A futás végén egy rejtett teszt – amit a csapat nem lát és nem módosíthat – ugyanezt az interfészt ellenőrzi. Ha ugyanaz a csapat írná a kódot és a mércét is, a mérce mindig az implementációhoz igazodna.
The harness runs the full FRST team on fixed tasks, exactly as a user would. The task text describes the interface (routes, field names, response shapes). At the end of the run a hidden test – one the team can neither see nor change – checks that same interface. If the same team wrote the code and the yardstick, the yardstick would always bend to fit the implementation.
| Ítélet | Jelentése |
|---|---|
| OK | Az FRST késznek mondta, és a független teszt is átment. |
| HAMIS ZÖLD | Az FRST késznek mondta, de a független teszt bukott. Ez a legfontosabb szám: ennyiszer hazudott a rendszer. |
| FELESLEGES PIROS | Az FRST hibát jelzett, pedig a kód valójában jó volt. |
| BUKOTT | Mindkettő bukott – őszinte kudarc. |
| Verdict | Meaning |
|---|---|
| OK | FRST said done, and the independent test passed. |
| FALSE GREEN | FRST said done, but the independent test failed. This is the most important number: how often the system lied. |
| UNNECESSARY RED | FRST reported a failure, although the code was actually fine. |
| FAILED | Both failed – an honest failure. |
A modellek a mérésekben: munkások Gemini 3.8 Flash, kapuőr Gemini 3.6 Flash, a saját kulcson. A költség a modellszolgáltató által számolt tényleges költség.
Models in the measurements: workers on Gemini 3.8 Flash, gatekeeper on Gemini 3.6 Flash, on our own key. Cost is the actual cost as calculated from the provider's pricing.
A legutóbbi mérésekThe latest measurements
Egy nagyobb feladat: CMS motor (PHP)A bigger task: a CMS engine (PHP)
Saját tartalomkezelő PHP-ban: webes telepítő, belépés, CSRF-védelem, bejegyzések és oldalak, lapozás, két téma, médiafeltöltés szűréssel, törlés – 24 rejtett HTTP-teszt, négyfős csapat. Négy futás egymás után. Közöttük a kapukat, a PHP-konvenciót és a Tester promptját javítottuk (0.10.9); a feladat szövege nem változott. A rejtett teszt a 2. és a 3. futás között eggyel bővült (a feltöltött fájl linkjének pontos ellenőrzése) – szigorúbb lett, nem lazább.
A custom content management system in PHP: web installer, login, CSRF protection, posts and pages, pagination, two themes, media upload with filtering, deletion – 24 hidden HTTP tests, a team of four. Four runs in a row. Between them we fixed the gates, the PHP convention and the Tester's prompt (0.10.9); the task text did not change. The hidden test gained one check between runs 2 and 3 (the exact link of an uploaded file) – it got stricter, not looser.
| # | Ítélet | Kör | Költség | Független teszt |
|---|---|---|---|---|
| 1 | BUKOTT | 7 | $0.669 | 12 pass / 11 fail |
| 2 | BUKOTT | 7 | $0.343 | 21 pass / 2 fail |
| 3 | FELESLEGES PIROS | 7 | $1.025 | 24 pass / 0 fail |
| 4 | OK | 3 | $0.605 | 24 pass / 0 fail |
| # | Verdict | Rounds | Cost | Independent test |
|---|---|---|---|---|
| 1 | FAILED | 7 | $0.669 | 12 pass / 11 fail |
| 2 | FAILED | 7 | $0.343 | 21 pass / 2 fail |
| 3 | UNNECESSARY RED | 7 | $1.025 | 24 pass / 0 fail |
| 4 | OK | 3 | $0.605 | 24 pass / 0 fail |
Ez fejlesztési napló, nem statisztika: minden beállításból egyetlen futás. Amit a bukások megmutattak: egy sablonban nem létező változó 7 körön át csak a szerver naplójában állt, a kapu üzenetében nem; egy teszt a letöltött kép bájtjait írta a hibaüzenetbe, és ettől a kapu 7 körön át vak maradt; a saját fájlnév-jelölő levágásunk hibás PHP-t hagyott a sablonok elején; és a biztonsági kapu minden fájlfeltöltést súlyos hibának vett. A 4. futás eredménye kipróbálható a Demók között.
This is a development log, not statistics: one run per configuration. What the failures showed: a variable missing from a template sat in the server log for 7 rounds but never reached the gate's message; a test wrote the bytes of a downloaded image into its failure message, which blinded the gate for 7 rounds; our own filename-marker stripping left broken PHP at the top of templates; and the security gate treated every file upload as a severe issue. The result of run 4 can be tried in the Demos.
Alapmérés: 8 feladat × 2Baseline: 8 tasks × 2
Ugyanaz a nyolc feladat, mint a nap első alapmérésében, a szerződés-javítás után: 14 OK, 1 hamis zöld, 1 felesleges piros. A hamis zöld a bevásárlókosár 2. futása: az FRST késznek mondta, a rejtett teszt 11/12 – az okát még nem elemeztük. A felesleges piros a többfájlos Flask app 1. futása: a független teszt 15/15, mégis piros lett, mert a kapuőr csak a munkások aktuális fájllistáját látta, és a gazda nélküli fájlokat hiányzónak hitte. Ezt a 0.10.9 javítja – a teljes alapmérést a javítás után még nem ismételtük meg.
The same eight tasks as the day's first baseline, after the contract fix: 14 OK, 1 false green, 1 unnecessary red. The false green is the shopping cart's 2nd run: FRST said done, the hidden test gave 11/12 – we have not analysed why yet. The unnecessary red is the multi-file Flask app's 1st run: the independent test gave 15/15, yet it went red, because the gatekeeper only saw the workers' current file lists and took files without an owner for missing ones. 0.10.9 fixes this – we have not re-run the full baseline since.
| Feladat | Stack | # | Ítélet | Kör | Költség | Független teszt |
|---|---|---|---|---|---|---|
| Többmodulos app bővítése: címkék, migráció, szűrés | Flask | 1 | OK | 1 | $0.100 | 24 pass / 0 fail |
| Többmodulos app bővítése: címkék, migráció, szűrés | Flask | 2 | OK | 1 | $0.099 | 24 pass / 0 fail |
| Meglévő jegyzet API bővítése címkékkel | Flask | 1 | OK | 1 | $0.042 | 10 pass / 0 fail |
| Meglévő jegyzet API bővítése címkékkel | Flask | 2 | OK | 1 | $0.043 | 10 pass / 0 fail |
| Regisztráció, belépés, védett oldal | Flask | 1 | OK | 2 | $0.070 | 13 pass / 0 fail |
| Regisztráció, belépés, védett oldal | Flask | 2 | OK | 1 | $0.059 | 13 pass / 0 fail |
| Többfájlos Flask app blueprintekkel | Flask | 1 | FELESLEGES PIROS | 4 | $0.144 | 15 pass / 0 fail |
| Többfájlos Flask app blueprintekkel | Flask | 2 | OK | 1 | $0.083 | 15 pass / 0 fail |
| Jegyzet-app: backend és frontend egyszerre | Node | 1 | OK | 1 | $0.066 | 8 pass / 0 fail |
| Jegyzet-app: backend és frontend egyszerre | Node | 2 | OK | 1 | $0.048 | 8 pass / 0 fail |
| Jegyzet-app: backend, utána frontend | Node | 1 | OK | 1 | $0.054 | 8 pass / 0 fail |
| Jegyzet-app: backend, utána frontend | Node | 2 | OK | 1 | $0.070 | 8 pass / 0 fail |
| Teendő API (Express) | Node | 1 | OK | 1 | $0.042 | 7 pass / 0 fail |
| Teendő API (Express) | Node | 2 | OK | 2 | $0.050 | 7 pass / 0 fail |
| Bevásárlókosár (logika + build) | React | 1 | OK | 1 | $0.055 | 12 pass / 0 fail |
| Bevásárlókosár (logika + build) | React | 2 | HAMIS ZÖLD | 1 | $0.057 | 11 pass / 1 fail |
| Task | Stack | # | Verdict | Rounds | Cost | Independent test |
|---|---|---|---|---|---|---|
| Extending a multi-module app: tags, migration, filtering | Flask | 1 | OK | 1 | $0.100 | 24 pass / 0 fail |
| Extending a multi-module app: tags, migration, filtering | Flask | 2 | OK | 1 | $0.099 | 24 pass / 0 fail |
| Extending an existing notes API with tags | Flask | 1 | OK | 1 | $0.042 | 10 pass / 0 fail |
| Extending an existing notes API with tags | Flask | 2 | OK | 1 | $0.043 | 10 pass / 0 fail |
| Registration, login, protected page | Flask | 1 | OK | 2 | $0.070 | 13 pass / 0 fail |
| Registration, login, protected page | Flask | 2 | OK | 1 | $0.059 | 13 pass / 0 fail |
| Multi-file Flask app with blueprints | Flask | 1 | UNNECESSARY RED | 4 | $0.144 | 15 pass / 0 fail |
| Multi-file Flask app with blueprints | Flask | 2 | OK | 1 | $0.083 | 15 pass / 0 fail |
| Notes app: backend and frontend in parallel | Node | 1 | OK | 1 | $0.066 | 8 pass / 0 fail |
| Notes app: backend and frontend in parallel | Node | 2 | OK | 1 | $0.048 | 8 pass / 0 fail |
| Notes app: backend first, then frontend | Node | 1 | OK | 1 | $0.054 | 8 pass / 0 fail |
| Notes app: backend first, then frontend | Node | 2 | OK | 1 | $0.070 | 8 pass / 0 fail |
| Todo API (Express) | Node | 1 | OK | 1 | $0.042 | 7 pass / 0 fail |
| Todo API (Express) | Node | 2 | OK | 2 | $0.050 | 7 pass / 0 fail |
| Shopping cart (logic + build) | React | 1 | OK | 1 | $0.055 | 12 pass / 0 fail |
| Shopping cart (logic + build) | React | 2 | FALSE GREEN | 1 | $0.057 | 11 pass / 1 fail |
Az összes mérésAll measurements
Időrendben, a közbülső – kevésbé hízelgő – mérésekkel együtt. A 2026-09-25-i sorok egy fejlesztési napot mutatnak: minden javítás előtt és után mértünk. A történetüket a cikkek mesélik el.
In chronological order, including the less flattering intermediate ones. The 25 Sep 2026 rows show one day of development: we measured before and after every fix. The articles tell their story.
| Dátum | Mérés | Futás | OK | Hamis zöld | Felesleges piros | Bukott | Költség |
|---|---|---|---|---|---|---|---|
| 2026-09-13 | 11 feladat × 3 (szórás) | 33 | 30 | 1 | 0 | 2 | $3.64 |
| 2026-09-13 | 0.9.2 alapmérés, 11 feladat × 1 | 11 | 11 | 0 | 0 | 0 | $1.06 |
| 2026-09-25 | Alapmérés: Flask, Node, React, bővítések – 8 × 2 | 16 | 15 | 0 | 0 | 1 | $1.28 |
| 2026-09-25 | A/B „A”: munkás-eszközök nélkül | 16 | 13 | 1 | 1 | 1 | $1.14 |
| 2026-09-25 | A/B „C”: munkás-eszközökkel | 16 | 13 | 0 | 1 | 2 | $1.52 |
| 2026-09-25 | Célzott visszajelzés – 2 bővítés × 2 | 4 | 3 | 1 | 0 | 0 | $0.49 |
| 2026-09-25 | + meglévő tesztek védelme | 4 | 1 | 0 | 2 | 1 | $0.32 |
| 2026-09-25 | + az Architect látja a szerződést – 2 × 3 | 6 | 6 | 0 | 0 | 0 | $0.46 |
| 2026-09-25 | Alapmérés a szerződés-javítás után – 8 × 2 | 16 | 14 | 1 | 1 | 0 | $1.08 |
| 2026-09-25 | CMS motor (PHP), 4 futás – közben a kapuk javítása | 4 | 1 | 0 | 1 | 2 | $2.64 |
| 2026-09-26 | A/B: futtatási próba nélkül – 4 Flask-feladat × 2 | 8 | 8 | 0 | 0 | 0 | $0.59 |
| 2026-09-26 | A/B: futtatási próbával (1-szer lépett közbe) | 7 | 7 | 0 | 0 | 0 | $0.52 |
| Date | Measurement | Runs | OK | False green | Unnecessary red | Failed | Cost |
|---|---|---|---|---|---|---|---|
| 2026-09-13 | 11 tasks × 3 (variance) | 33 | 30 | 1 | 0 | 2 | $3.64 |
| 2026-09-13 | 0.9.2 baseline, 11 tasks × 1 | 11 | 11 | 0 | 0 | 0 | $1.06 |
| 2026-09-25 | Baseline: Flask, Node, React, extensions – 8 × 2 | 16 | 15 | 0 | 0 | 1 | $1.28 |
| 2026-09-25 | A/B “A”: without worker tools | 16 | 13 | 1 | 1 | 1 | $1.14 |
| 2026-09-25 | A/B “C”: with worker tools | 16 | 13 | 0 | 1 | 2 | $1.52 |
| 2026-09-25 | Targeted feedback – 2 extensions × 2 | 4 | 3 | 1 | 0 | 0 | $0.49 |
| 2026-09-25 | + existing-test protection | 4 | 1 | 0 | 2 | 1 | $0.32 |
| 2026-09-25 | + the Architect sees the contract – 2 × 3 | 6 | 6 | 0 | 0 | 0 | $0.46 |
| 2026-09-25 | Baseline after the contract fix – 8 × 2 | 16 | 14 | 1 | 1 | 0 | $1.08 |
| 2026-09-25 | CMS engine (PHP), 4 runs – gates fixed in between | 4 | 1 | 0 | 1 | 2 | $2.64 |
| 2026-09-26 | A/B: without the run probe – 4 Flask tasks × 2 | 8 | 8 | 0 | 0 | 0 | $0.59 |
| 2026-09-26 | A/B: with the run probe (stepped in once) | 7 | 7 | 0 | 0 | 0 | $0.52 |
Alapmérés több technológiánBaseline across technologies
Nyolc feladat Flask, Node/Express és React/Vite alapon, köztük két meglévő projekt bővítése, kétszer lefuttatva. A két jegyzet-app feladat ugyanaz: egyszer a backend és a frontend párhuzamosan, egyszer egymás után készül – ez méri, hogy a sorrend segít-e az összeillesztésben.
Eight tasks on Flask, Node/Express and React/Vite, including two extensions of existing projects, run twice. The two notes-app tasks are the same: once the backend and frontend are built in parallel, once one after the other – this measures whether ordering helps them fit together.
| Feladat | Stack | # | Ítélet | Kör | Költség | Független teszt |
|---|---|---|---|---|---|---|
| Többmodulos app bővítése: címkék, migráció, szűrés | Flask | 1 | BUKOTT | 4 | $0.212 | 1 pass / 23 fail |
| Többmodulos app bővítése: címkék, migráció, szűrés | Flask | 2 | OK | 1 | $0.081 | 24 pass / 0 fail |
| Meglévő jegyzet API bővítése címkékkel | Flask | 1 | OK | 4 | $0.174 | 10 pass / 0 fail |
| Meglévő jegyzet API bővítése címkékkel | Flask | 2 | OK | 2 | $0.064 | 10 pass / 0 fail |
| Regisztráció, belépés, védett oldal | Flask | 1 | OK | 1 | $0.059 | 13 pass / 0 fail |
| Regisztráció, belépés, védett oldal | Flask | 2 | OK | 1 | $0.062 | 13 pass / 0 fail |
| Többfájlos Flask app blueprintekkel | Flask | 1 | OK | 1 | $0.093 | 15 pass / 0 fail |
| Többfájlos Flask app blueprintekkel | Flask | 2 | OK | 1 | $0.082 | 15 pass / 0 fail |
| Jegyzet-app: backend és frontend egyszerre | Node | 1 | OK | 1 | $0.088 | 8 pass / 0 fail |
| Jegyzet-app: backend és frontend egyszerre | Node | 2 | OK | 1 | $0.052 | 8 pass / 0 fail |
| Jegyzet-app: backend, utána frontend | Node | 1 | OK | 1 | $0.050 | 8 pass / 0 fail |
| Jegyzet-app: backend, utána frontend | Node | 2 | OK | 1 | $0.054 | 8 pass / 0 fail |
| Teendő API (Express) | Node | 1 | OK | 1 | $0.041 | 7 pass / 0 fail |
| Teendő API (Express) | Node | 2 | OK | 1 | $0.048 | 7 pass / 0 fail |
| Bevásárlókosár (logika + build) | React | 1 | OK | 2 | $0.062 | 12 pass / 0 fail |
| Bevásárlókosár (logika + build) | React | 2 | OK | 1 | $0.055 | 12 pass / 0 fail |
| Task | Stack | # | Verdict | Rounds | Cost | Independent test |
|---|---|---|---|---|---|---|
| Extending a multi-module app: tags, migration, filtering | Flask | 1 | FAILED | 4 | $0.212 | 1 pass / 23 fail |
| Extending a multi-module app: tags, migration, filtering | Flask | 2 | OK | 1 | $0.081 | 24 pass / 0 fail |
| Extending an existing notes API with tags | Flask | 1 | OK | 4 | $0.174 | 10 pass / 0 fail |
| Extending an existing notes API with tags | Flask | 2 | OK | 2 | $0.064 | 10 pass / 0 fail |
| Registration, login, protected page | Flask | 1 | OK | 1 | $0.059 | 13 pass / 0 fail |
| Registration, login, protected page | Flask | 2 | OK | 1 | $0.062 | 13 pass / 0 fail |
| Multi-file Flask app with blueprints | Flask | 1 | OK | 1 | $0.093 | 15 pass / 0 fail |
| Multi-file Flask app with blueprints | Flask | 2 | OK | 1 | $0.082 | 15 pass / 0 fail |
| Notes app: backend and frontend in parallel | Node | 1 | OK | 1 | $0.088 | 8 pass / 0 fail |
| Notes app: backend and frontend in parallel | Node | 2 | OK | 1 | $0.052 | 8 pass / 0 fail |
| Notes app: backend first, then frontend | Node | 1 | OK | 1 | $0.050 | 8 pass / 0 fail |
| Notes app: backend first, then frontend | Node | 2 | OK | 1 | $0.054 | 8 pass / 0 fail |
| Todo API (Express) | Node | 1 | OK | 1 | $0.041 | 7 pass / 0 fail |
| Todo API (Express) | Node | 2 | OK | 1 | $0.048 | 7 pass / 0 fail |
| Shopping cart (logic + build) | React | 1 | OK | 2 | $0.062 | 12 pass / 0 fail |
| Shopping cart (logic + build) | React | 2 | OK | 1 | $0.055 | 12 pass / 0 fail |
Amit nem mértünkWhat we have not measured
- Nagy kódbázisok. A mért projektek legfeljebb egy-két tucat fájlosak. Hogy ötven vagy ötszáz fájlnál mi történik, nem tudjuk.
- PHP és statikus oldalak. PHP-ból egyetlen feladat (a CMS motor) van rejtett tesztel mérve, négy futással – egy feladatból nem általánosítunk. Statikus oldalakról nincs rejtett tesztes mérés.
- Külső API-k, nem-SQLite adatbázis, üzenetsorok. Egyik sincs mérve.
- Homályos cél. A specifikációtól a működő alkalmazásig vezető út igazolt; az ötlettől az alkalmazásig nem.
- Szórás. Ugyanaz a feladat változatlan kóddal is adhat más eredményt – ezért ismétlünk, és ezért kevés futásból nem vonunk le nagy következtetést.
- Large codebases. The measured projects have at most a couple of dozen files. What happens at fifty or five hundred files, we don't know.
- PHP and static sites. For PHP only one task (the CMS engine) is measured with a hidden test, over four runs – we do not generalise from one task. Static sites have no hidden-test measurement.
- External APIs, non-SQLite databases, message queues. None of these are measured.
- A vague goal. The path from a spec to a working application is proven; from an idea to an application it is not.
- Variance. The same task can give a different result with unchanged code – that's why we repeat runs, and why we don't draw big conclusions from a few runs.
Ha ezek közül valami változik, ez az oldal is változik vele. A mérés dátuma mindig ott van a táblázatban.
If any of this changes, this page changes with it. The date of every measurement is always in the table.