Skip to content

Instantly share code, notes, and snippets.

@JustinMeimar
Last active April 23, 2026 21:01
Show Gist options
  • Select an option

  • Save JustinMeimar/be99221dd86d18cbd282bc4421c0d9f7 to your computer and use it in GitHub Desktop.

Select an option

Save JustinMeimar/be99221dd86d18cbd282bc4421c0d9f7 to your computer and use it in GitHub Desktop.
octane benchmark on aot mode

config:

  • release build of shell
  • amd ryzen 5 7640u, pinned to core 2, governor=performance, boost=off
  • aot ic corpus accrued directly from octane (all ic stubs are pertinent)
  • subset of all self-hosted builtins are provided AOT [1]
  • n=2 iterations per shell config
  • all comparissons done against vm-only as a baseline

shell configurations:

  • vm-only: --no-jit-backend
  • aot-interp: --no-ion --no-baseline --blinterp-eager --aot-interp --cache-ir-stubs=off
  • aot-interp-sh: --no-ion --no-baseline --blinterp-eager --aot-interp --aot-selfhosted --cache-ir-stubs=off
  • aot-interp-ics: --no-ion --no-baseline --blinterp-eager --aot-interp --enforce-aot-ics
  • aot-interp-sh-ics: --no-ion --no-baseline --blinterp-eager --aot-interp --aot-selfhosted --enforce-aot-ics

octane-results: (n=2)

metric vm-only (baseline) aot-interp delta aot-interp-sh delta aot-interp-ics delta aot-interp-sh-ics delta
richards 321.5 180.0 -44.0% 169.0 -47.4% 734.0 +128.3% 755.0 +134.8%
deltablue 308.5 226.0 -26.7% 218.0 -29.3% 845.5 +174.1% 894.0 +189.8%
crypto 768.0 210.5 -72.6% 205.0 -73.3% 827.0 +7.7% 829.0 +7.9%
raytrace 916.5 599.0 -34.6% 612.0 -33.2% 1708.5 +86.4% 1723.0 +88.0%
earleyboyer 1318.0 900.0 -31.7% 920.0 -30.2% 2765.5 +109.8% 2661.0 +101.9%
regexp 524.5 355.0 -32.3% 342.0 -34.8% 1438.5 +174.3% 1410.5 +168.9%
splay 2356.5 1410.5 -40.1% 1346.0 -42.9% 4479.5 +90.1% 4617.5 +95.9%
splaylatency 8125.0 6297.0 -22.5% 6124.0 -24.6% 10673.5 +31.4% 10536.5 +29.7%
navierstokes 1369.0 348.5 -74.5% 356.0 -74.0% 1563.5 +14.2% 1512.5 +10.5%
pdfjs 3839.0 1765.0 -54.0% 1732.0 -54.9% 5426.5 +41.4% 5302.0 +38.1%
mandreel 336.0 150.5 -55.2% 146.5 -56.4% 381.0 +13.4% 378.0 +12.5%
mandreellatency 2063.5 1003.5 -51.4% 983.0 -52.4% 2045.0 -0.9% 2048.0 -0.8%
gameboy 2697.0 1197.0 -55.6% 1141.0 -57.7% 5253.5 +94.8% 5254.0 +94.8%
codeload 31427.5 29101.0 -7.4% 27799.0 -11.5% 28738.0 -8.6% 28567.5 -9.1%
box2d 1720.0 785.0 -54.4% 751.0 -56.3% 3870.5 +125.0% 3926.0 +128.3%
zlib 1245.5 77419.5 +6115.9% 76057.5 +6006.6% 75442.5 +5957.2% 76791.5 +6065.5%
typescript 5756.5 3531.0 -38.7% 3481.0 -39.5% 10873.0 +88.9% 10785.5 +87.4%
score 1616.5 1145.5 -29.1% 1118.0 -30.8% 3259.0 +101.6% 3260.0 +101.7%

comments:

  • zlib is a massive outlier.. ?
  • eager blinterp takes a 29.1% perf hit. I was intiially surprised at this, but now see why this may be expected: blinterp w/o ics pays for the dispatch overhead of looking for non-existent ics then bailing out to VM, then returning back to blinterp. Lots of expensive native to JIT context switching without any reward.
  • self-hosted builtins contribution seems negligable.

footnotes:

[1] using the following subset of self hosted builtins (having some issues with the entire set)

static const char* const kSelfHostedWhitelist[] = {
        "ArrayMap",
        "ArrayFilter",
        "ArrayReduce",
        "ArrayReduceRight",
        "ArrayForEach",
        "ArrayFind",
        "ArrayFindIndex",
        "ArraySome",
        "ArrayEvery",
        "ArrayIncludes",
        "ArrayFrom",
        "ArrayFlat",
        "ArrayFlatMap",
        "ArraySort",
        "ArrayOf",
        "ArraySlice",
        "ArrayKeys",
        "ArrayValues",
        "ArrayEntries",
        "StringReplace",
        "StringSplit",
        "StringStartsWith",
        "StringEndsWith",
        "StringIncludes",
        "StringTrim",
        "StringPadStart",
        "StringPadEnd",
        "ObjectKeys",
        "ObjectValues",
        "ObjectEntries",
        "ObjectAssign",
        "PromiseThen",
        "NumberToLocaleString",
        "DateToLocaleString",
        "RegExpPrototypeExec",
        "TypedArraySort",
    };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment