Files
anonymous_github/backend/reports/slower-path-optimization.html
T

5 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html><html><head><meta charset="utf-8"><style>
body{font-family:var(--font-sans,system-ui);color:var(--foreground,#222);margin:0;line-height:1.5}h2{font-size:22px;margin:0 0 8px}p{color:var(--muted-foreground,#666);margin:10px 0;font-size:14px}select{font:inherit;background:var(--background,white);color:inherit;border:1px solid var(--border,#ddd);border-radius:6px;padding:7px}table{border-collapse:collapse;width:100%;margin:16px 0;font-size:14px}th,td{padding:12px 6px;border-bottom:1px solid var(--border,#ddd);text-align:right;font-variant-numeric:tabular-nums}th:first-child,td:first-child{text-align:left;padding-left:0}th{font-size:12px;color:var(--muted-foreground,#666)}.after{color:var(--success,#24724b);font-weight:600}details{margin-top:14px;font-size:13px}.scroll{overflow:auto}label{font-size:13px}#note{font-size:13px}
</style></head><body><h2>Go’s slower paths, corrected</h2><p>Same repository snapshot and 1,000-file directory fixture. Both runtimes rerun in alternating order; all seven successful response signatures still match.</p><label>Measure <select id="mode"><option value="1">Warm median, sequential requests</option><option value="8">Warm median, eight concurrent requests</option><option value="cold">First request</option></select></label><div class="scroll"><table><thead><tr><th>Use case</th><th>TypeScript</th><th>Go before</th><th>Go after</th></tr></thead><tbody id="rows"></tbody></table></div><p id="note"></p><details><summary>Other measured endpoints</summary><div class="scroll"><table><thead><tr><th>Use case</th><th>TypeScript</th><th>Go before</th><th>Go after</th></tr></thead><tbody id="other"></tbody></table></div></details><p>Counts now aggregate by directory in MongoDB. Website files use verified direct lookups or a collision-aware path index, with live snapshot and authorization checks.</p><p style="font-size:12px">Loopback backend timings, identity encoding, shared caches enabled, one worker. Two rounds; medians of per-round medians. Excludes GitHub, CDN and browser rendering. First masked/custom-path requests can still build an index. ZIP was not rerun because these changes do not alter its serving path.</p><script>
const rows=[{"name":"root directory","ts":{"output":{"status":200,"sha256":"52d03ac37d3e22e85d9629413d91a29d1f98410b2d34e419785ba1ad00dafa9d","entries":24},"coldMs":121.93528099999821,"warm":{"1":{"p50Ms":26.658700499998304,"p95Ms":43.35446200000024,"cpuMs":1005,"peakProcessTreeRssBytes":269817856,"requestsPerSecond":35.67854073891018},"8":{"p50Ms":148.71795650000058,"p95Ms":193.92164700000103,"cpuMs":845,"peakProcessTreeRssBytes":306208768,"requestsPerSecond":55.55278437889569}}},"goBefore":{"output":{"status":200,"sha256":"52d03ac37d3e22e85d9629413d91a29d1f98410b2d34e419785ba1ad00dafa9d","entries":24},"coldMs":19.393674499988265,"warm":{"1":{"p50Ms":7.403331500001514,"p95Ms":10.997728000002098,"cpuMs":185,"peakProcessTreeRssBytes":73525248,"requestsPerSecond":123.65028053177949},"8":{"p50Ms":9.341673500006436,"p95Ms":22.23802649999925,"cpuMs":180,"peakProcessTreeRssBytes":81291264,"requestsPerSecond":625.0860770621364}}},"goAfter":{"output":{"status":200,"sha256":"52d03ac37d3e22e85d9629413d91a29d1f98410b2d34e419785ba1ad00dafa9d","entries":24},"coldMs":15.809187500002736,"warm":{"1":{"p50Ms":7.785142000004271,"p95Ms":11.032116499998665,"cpuMs":195,"peakProcessTreeRssBytes":73023488,"requestsPerSecond":120.73566781543161},"8":{"p50Ms":9.650027499999851,"p95Ms":22.583658999999898,"cpuMs":185,"peakProcessTreeRssBytes":81084416,"requestsPerSecond":628.6360604239087}}}},{"name":"src directory","ts":{"output":{"status":200,"sha256":"012081e4d80b7bf24a5931359e89d5fefa0489a7989fd86ff4fdc01bb090d92b","entries":7},"coldMs":26.16265999999996,"warm":{"1":{"p50Ms":18.20889850000094,"p95Ms":21.920544000002337,"cpuMs":510,"peakProcessTreeRssBytes":306882560,"requestsPerSecond":53.00491309327751},"8":{"p50Ms":99.39222299999892,"p95Ms":110.18144500000017,"cpuMs":475,"peakProcessTreeRssBytes":307423232,"requestsPerSecond":83.30122797581699}}},"goBefore":{"output":{"status":200,"sha256":"012081e4d80b7bf24a5931359e89d5fefa0489a7989fd86ff4fdc01bb090d92b","entries":7},"coldMs":8.060878500000399,"warm":{"1":{"p50Ms":6.060465499998827,"p95Ms":7.087685999991663,"cpuMs":115,"peakProcessTreeRssBytes":82075648,"requestsPerSecond":160.05552208096725},"8":{"p50Ms":8.227547999998933,"p95Ms":12.091938999994454,"cpuMs":100,"peakProcessTreeRssBytes":85401600,"requestsPerSecond":852.6113434439787}}},"goAfter":{"output":{"status":200,"sha256":"012081e4d80b7bf24a5931359e89d5fefa0489a7989fd86ff4fdc01bb090d92b","entries":7},"coldMs":7.556426499999361,"warm":{"1":{"p50Ms":5.599485499998991,"p95Ms":6.702892999997857,"cpuMs":120,"peakProcessTreeRssBytes":81836032,"requestsPerSecond":172.5725228707791},"8":{"p50Ms":7.0273734999973385,"p95Ms":11.335802499997953,"cpuMs":95,"peakProcessTreeRssBytes":84021248,"requestsPerSecond":952.8766795594247}}}},{"name":"1000-file directory","ts":{"output":{"status":200,"sha256":"8b091406715c6232458f52f8c2516031ed2359d2586737cb3923559f96c8c841","entries":1000},"coldMs":102.47301200000038,"warm":{"1":{"p50Ms":91.85127300000022,"p95Ms":135.40886700000192,"cpuMs":3055,"peakProcessTreeRssBytes":339699712,"requestsPerSecond":10.540164558372513},"8":{"p50Ms":430.93180849999953,"p95Ms":689.4844045000063,"cpuMs":2340,"peakProcessTreeRssBytes":355284992,"requestsPerSecond":16.224277595483656}}},"goBefore":{"output":{"status":200,"sha256":"8b091406715c6232458f52f8c2516031ed2359d2586737cb3923559f96c8c841","entries":1000},"coldMs":62.96934049999618,"warm":{"1":{"p50Ms":64.99477400000251,"p95Ms":77.43742199999542,"cpuMs":1885,"peakProcessTreeRssBytes":325939200,"requestsPerSecond":15.166581719605437},"8":{"p50Ms":53.277233500000875,"p95Ms":77.01955949999683,"cpuMs":1200,"peakProcessTreeRssBytes":346836992,"requestsPerSecond":133.32074875303596}}},"goAfter":{"output":{"status":200,"sha256":"8b091406715c6232458f52f8c2516031ed2359d2586737cb3923559f96c8c841","entries":1000},"coldMs":70.37175750000097,"warm":{"1":{"p50Ms":65.4646554999963,"p95Ms":74.7055220000002,"cpuMs":1830,"peakProcessTreeRssBytes":324298752,"requestsPerSecond":15.251707595844026},"8":{"p50Ms":51.683250499998394,"p95Ms":73.53740349999862,"cpuMs":1270,"peakProcessTreeRssBytes":345358336,"requestsPerSecond":137.05539391600362}}}},{"name":"file counts","ts":{"output":{"status":200,"sha256":"14157927c66f50f4a524e003f0dd849218f678cffc266a149d37b2afc6c64386","entries":45},"coldMs":40.370750499998394,"warm":{"1":{"p50Ms":27.995887500001118,"p95Ms":33.99419699999635,"cpuMs":400,"peakProcessTreeRssBytes":356231168,"requestsPerSecond":34.508702948642295},"8":{"p50Ms":67.79125949999798,"p95Ms":81.45753349999723,"cpuMs":375,"peakProcessTreeRssBytes":357986304,"requestsPerSecond":112.01351082801071}}},"goBefore":{"output":{"status":200,"sha256":"14157927c66f50f4a524e003f0dd849218f678cffc266a149d37b2afc6c64386","entries":45},"coldMs":69.7607330000028,"warm":{"1":{"p50Ms":69.8233264999908,"p95Ms":93.21686600000248,"cpuMs":1900,"peakProcessTreeRssBytes":363751424,"requestsPerSecond":13.910285428547263},"8":{"p50Ms":78.61524899999495,"p95Ms":90.27311950000148,"cpuMs":1480,"peakProcessTreeRssBytes":365950976,"requestsPerSecond":96.82411463773647}}},"goAfter":{"output":{"status":200,"sha256":"14157927c66f50f4a524e003f0dd849218f678cffc266a149d37b2afc6c64386","entries":45},"coldMs":23.164501500003098,"warm":{"1":{"p50Ms":19.61992250000185,"p95Ms":23.22367249999661,"cpuMs":195,"peakProcessTreeRssBytes":347303936,"requestsPerSecond":49.3294084869274},"8":{"p50Ms":21.67325549999805,"p95Ms":27.604927500000485,"cpuMs":115,"peakProcessTreeRssBytes":347648000,"requestsPerSecond":337.5978312959177}}}},{"name":"gulpfile.js","ts":{"output":{"status":200,"sha256":"582a19c5d0d13b0526acfa491de26b4ad60f75c7fa13fed1054d7f66d22385fc"},"coldMs":63.921571500002756,"warm":{"1":{"p50Ms":22.579349500003445,"p95Ms":29.557088999998086,"cpuMs":875,"peakProcessTreeRssBytes":358584320,"requestsPerSecond":42.83885056460038},"8":{"p50Ms":113.05269499999667,"p95Ms":130.63679400000183,"cpuMs":580,"peakProcessTreeRssBytes":361082880,"requestsPerSecond":67.84627017810665}}},"goBefore":{"output":{"status":200,"sha256":"582a19c5d0d13b0526acfa491de26b4ad60f75c7fa13fed1054d7f66d22385fc"},"coldMs":61.77973450000354,"warm":{"1":{"p50Ms":17.54745600000024,"p95Ms":20.274646999998367,"cpuMs":360,"peakProcessTreeRssBytes":366757888,"requestsPerSecond":55.82094005020072},"8":{"p50Ms":68.20507649999126,"p95Ms":81.87241249999352,"cpuMs":355,"peakProcessTreeRssBytes":367341568,"requestsPerSecond":107.10527593451862}}},"goAfter":{"output":{"status":200,"sha256":"582a19c5d0d13b0526acfa491de26b4ad60f75c7fa13fed1054d7f66d22385fc"},"coldMs":49.17443799999819,"warm":{"1":{"p50Ms":17.883655499997985,"p95Ms":20.807584999995015,"cpuMs":410,"peakProcessTreeRssBytes":349437952,"requestsPerSecond":54.43237661452041},"8":{"p50Ms":64.18658750000031,"p95Ms":74.10895049999817,"cpuMs":325,"peakProcessTreeRssBytes":351086592,"requestsPerSecond":114.60864145639766}}}},{"name":"src/config.ts","ts":{"output":{"status":200,"sha256":"dadc35430eb9fa79ccf887b613704619199cbd111af8dddfc30e5c6ca3f5d003"},"coldMs":24.486336999998457,"warm":{"1":{"p50Ms":25.283140000001367,"p95Ms":35.57223400000112,"cpuMs":755,"peakProcessTreeRssBytes":363204608,"requestsPerSecond":38.555305692890094},"8":{"p50Ms":109.77933650000159,"p95Ms":130.4405555000012,"cpuMs":540,"peakProcessTreeRssBytes":364107776,"requestsPerSecond":70.66274767509225}}},"goBefore":{"output":{"status":200,"sha256":"dadc35430eb9fa79ccf887b613704619199cbd111af8dddfc30e5c6ca3f5d003"},"coldMs":58.48024899999291,"warm":{"1":{"p50Ms":18.06759750000856,"p95Ms":20.92086200000267,"cpuMs":380,"peakProcessTreeRssBytes":367613952,"requestsPerSecond":55.03073104274837},"8":{"p50Ms":60.91620750000584,"p95Ms":67.94174549999661,"cpuMs":300,"peakProcessTreeRssBytes":367751168,"requestsPerSecond":122.07709644199466}}},"goAfter":{"output":{"status":200,"sha256":"dadc35430eb9fa79ccf887b613704619199cbd111af8dddfc30e5c6ca3f5d003"},"coldMs":43.04393799999889,"warm":{"1":{"p50Ms":20.031920999997965,"p95Ms":22.66816149999795,"cpuMs":425,"peakProcessTreeRssBytes":353951744,"requestsPerSecond":49.34116525697704},"8":{"p50Ms":68.00779099999636,"p95Ms":76.57763199999681,"cpuMs":375,"peakProcessTreeRssBytes":356358144,"requestsPerSecond":108.7089747766081}}}},{"name":"website gulpfile.js","ts":{"output":{"status":200,"sha256":"582a19c5d0d13b0526acfa491de26b4ad60f75c7fa13fed1054d7f66d22385fc"},"coldMs":22.215049000002182,"warm":{"1":{"p50Ms":18.157132500002263,"p95Ms":24.566038000000844,"cpuMs":535,"peakProcessTreeRssBytes":365471744,"requestsPerSecond":53.051749662292295},"8":{"p50Ms":99.67454250000446,"p95Ms":150.90095299999484,"cpuMs":845,"peakProcessTreeRssBytes":369364992,"requestsPerSecond":72.50484807593446}}},"goBefore":{"output":{"status":200,"sha256":"582a19c5d0d13b0526acfa491de26b4ad60f75c7fa13fed1054d7f66d22385fc"},"coldMs":77.46532099999968,"warm":{"1":{"p50Ms":66.96795449998899,"p95Ms":82.43080350001401,"cpuMs":1670,"peakProcessTreeRssBytes":372340736,"requestsPerSecond":14.836257025333925},"8":{"p50Ms":104.15019399999437,"p95Ms":144.24375450000298,"cpuMs":2345,"peakProcessTreeRssBytes":403597312,"requestsPerSecond":68.09919709456383}}},"goAfter":{"output":{"status":200,"sha256":"582a19c5d0d13b0526acfa491de26b4ad60f75c7fa13fed1054d7f66d22385fc"},"coldMs":27.725894499999413,"warm":{"1":{"p50Ms":16.548908500000834,"p95Ms":18.955033500002173,"cpuMs":330,"peakProcessTreeRssBytes":356358144,"requestsPerSecond":59.63569729453375},"8":{"p50Ms":51.93328649999967,"p95Ms":58.2488185000002,"cpuMs":300,"peakProcessTreeRssBytes":356870144,"requestsPerSecond":143.37761911631128}}}}];function draw(){const mode=document.getElementById('mode').value;document.getElementById('rows').replaceChildren();document.getElementById('other').replaceChildren();for(const row of rows){const tr=document.createElement('tr');const name=document.createElement('td');name.textContent=row.name==='website gulpfile.js'?'/w/ file':row.name;tr.append(name);for(const key of ['ts','goBefore','goAfter']){const td=document.createElement('td');td.textContent=(mode==='cold'?row[key].coldMs:row[key].warm[mode].p50Ms).toFixed(1)+' ms';if(key==='goAfter')td.className='after';tr.append(td)}document.getElementById(['file counts','website gulpfile.js'].includes(row.name)?'rows':'other').append(tr)}document.getElementById('note').textContent=mode==='cold'?'First requests can share dependencies warmed by earlier endpoints; filesystem caches were not cleared.':'Warm measurements use 32 requests per endpoint and concurrency level in each round.';}document.getElementById('mode').onchange=draw;draw();
</script></body></html>