[{"data":1,"prerenderedAt":341},["ShallowReactive",2],{"navigation":3,"-guide-benchmarks":48,"-guide-benchmarks-surround":338},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":47},"Guide","\u002Fguide","1.guide\u002F1.index",[9,12,17,22,27,32,37,42],{"title":10,"path":6,"stem":7,"icon":11},"Getting started","i-lucide-rocket",{"title":13,"path":14,"stem":15,"icon":16},"Nuxt","\u002Fguide\u002Fnuxt","1.guide\u002F2.nuxt","i-logos-nuxt-icon",{"title":18,"path":19,"stem":20,"icon":21},"Next.js","\u002Fguide\u002Fnext","1.guide\u002F3.next","i-logos-nextjs-icon",{"title":23,"path":24,"stem":25,"icon":26},"How it works","\u002Fguide\u002Fhow-it-works","1.guide\u002F4.how-it-works","i-lucide-workflow",{"title":28,"path":29,"stem":30,"icon":31},"Options","\u002Fguide\u002Foptions","1.guide\u002F5.options","i-lucide-settings",{"title":33,"path":34,"stem":35,"icon":36},"API","\u002Fguide\u002Fapi","1.guide\u002F6.api","i-lucide-code",{"title":38,"path":39,"stem":40,"icon":41},"Privacy","\u002Fguide\u002Fprivacy","1.guide\u002F7.privacy","i-lucide-lock",{"title":43,"path":44,"stem":45,"icon":46},"Benchmarks","\u002Fguide\u002Fbenchmarks","1.guide\u002F8.benchmarks","i-lucide-gauge","i-lucide-book-open",{"id":49,"title":43,"body":50,"description":332,"extension":333,"meta":334,"navigation":335,"path":44,"seo":336,"stem":45,"__hash__":337},"content\u002F1.guide\u002F8.benchmarks.md",{"type":51,"value":52,"toc":326,"icon":46},"minimark",[53,66,236,239,244,250,269,287,293,297,300,320,323],[54,55,56,57,61,62,65],"p",{},"Reproduce with ",[58,59,60],"code",{},"pnpm bench",", which needs an API key. The raw output lives in\n",[58,63,64],{},"bench\u002Fresults\u002Fbench.json",".",[67,68,69,88],"table",{},[70,71,72],"thead",{},[73,74,75,79,82,85],"tr",{},[76,77,78],"th",{},"arm",[76,80,81],{},"off",[76,83,84],{},"native",[76,86,87],{},"precog",[89,90,91,109,123,136,148,162,175,188,201,212,224],"tbody",{},[73,92,93,97,100,103],{},[94,95,96],"td",{},"navigation median",[94,98,99],{},"147 ms",[94,101,102],{},"145 ms",[94,104,105],{},[106,107,108],"strong",{},"68 ms",[73,110,111,114,117,120],{},[94,112,113],{},"navigation p95",[94,115,116],{},"404 ms",[94,118,119],{},"397 ms",[94,121,122],{},"395 ms",[73,124,125,128,131,133],{},[94,126,127],{},"hit rate",[94,129,130],{},"n\u002Fa",[94,132,130],{},[94,134,135],{},"29%",[73,137,138,141,143,145],{},[94,139,140],{},"top guess correct",[94,142,130],{},[94,144,130],{},[94,146,147],{},"17%",[73,149,150,153,156,159],{},[94,151,152],{},"speculative loads \u002F session",[94,154,155],{},"18.3",[94,157,158],{},"24.8",[94,160,161],{},"33.4",[73,163,164,167,170,172],{},[94,165,166],{},"wasted loads \u002F session",[94,168,169],{},"2.0",[94,171,169],{},[94,173,174],{},"2.6",[73,176,177,180,183,185],{},[94,178,179],{},"wasted kB \u002F session",[94,181,182],{},"6.9",[94,184,182],{},[94,186,187],{},"10.3",[73,189,190,193,196,198],{},[94,191,192],{},"jev calls \u002F session",[94,194,195],{},"0",[94,197,195],{},[94,199,200],{},"14.9",[73,202,203,206,208,210],{},[94,204,205],{},"jev answered from cache",[94,207,130],{},[94,209,130],{},[94,211,147],{},[73,213,214,217,219,221],{},[94,215,216],{},"jev latency p50 \u002F p95",[94,218,130],{},[94,220,130],{},[94,222,223],{},"372 \u002F 622 ms",[73,225,226,229,231,233],{},[94,227,228],{},"tokens \u002F session",[94,230,195],{},[94,232,195],{},[94,234,235],{},"10398",[54,237,238],{},"Every figure is measured. Timings are wall-clock milliseconds from the click to the new page's\nheading, the predictions come from Jev, and the token counts are what the service reported.",[240,241,243],"h2",{"id":242},"what-the-numbers-say","What the numbers say",[54,245,246,249],{},[106,247,248],{},"The median navigation is about twice as fast."," The p95 does not move, because the tail is\nthe navigations the model got wrong, and prediction does not fix those.",[54,251,252,257,258,261,262,265,266,268],{},[106,253,254,256],{},[58,255,81],{}," is not \"nothing\"."," The playground sets ",[58,259,260],{},"takeOverNuxtLinkPrefetch",", so ",[58,263,264],{},"NuxtLink"," still\nprefetches a link the cursor rests on in every arm. ",[58,267,81],{}," means \"Chrome and Nuxt on their own\",\nwhich is the baseline worth beating.",[54,270,271,276,277,280,281,283,284,286],{},[106,272,273,275],{},[58,274,84],{}," is the free competitor."," Document speculation rules at ",[58,278,279],{},"eagerness: moderate"," need no\nmodel and no key. Here they tie ",[58,282,81],{},", because a visitor who clicks soon after the cursor lands\ndoes not give the browser enough hover to work with. That gap is what precog is for; if your\nvisitors hover for a second before clicking, ",[58,285,84],{}," already covers you.",[54,288,289,292],{},[106,290,291],{},"It costs about 15 calls and 10,000 tokens per session",", with a sixth of the calls answered\nfrom the server cache. Jev itself answers in 372 ms at the median and 622 ms at the p95, which\nis why the client deadline defaults to 1500 ms.",[240,294,296],{"id":295},"the-visitor-model","The visitor model",[54,298,299],{},"Each session is driven by a seeded generator, so all three arms face the same visitor:",[301,302,303,307,314,317],"ul",{},[304,305,306],"li",{},"read the page in two to four scroll steps with pauses,",[304,308,309,310,313],{},"pick a link with weight ",[58,311,312],{},"1 \u002F (rank + 1)"," over the links in the list,",[304,315,316],{},"move the cursor to it over a couple of waypoints,",[304,318,319],{},"dwell 90 to 210 ms, then click.",[54,321,322],{},"The dwell is short on purpose. A long hover lets the browser's own prefetch-on-interaction\nfinish every time, and then no arm is measuring anything but the hover.",[54,324,325],{},"Hit rate and top-guess accuracy are measured against this generator, not against a real\naudience. The timings do not depend on it: a warmed navigation is fast whoever asked for it.",{"title":327,"searchDepth":328,"depth":328,"links":329},"",2,[330,331],{"id":242,"depth":328,"text":243},{"id":295,"depth":328,"text":296},"Eight scripted sessions per arm, six navigations each, real Chrome against a production\nbuild, throttled to 250 ms of latency and 2000 kbit\u002Fs, predictions from Jev.","md",{"icon":46},{"icon":46},{"title":43,"description":332},"4d0FLUPMKUmPJDC71ZoCtu8Q7SjSd8HR-b8-aXxjST0",[339,340],{"title":38,"path":39,"stem":40,"description":327,"icon":41,"children":-1},null,1789942050302]