⚡FissionBenchmark

Decompile latency · non-ranking

OverviewSemantic rankingSame-functionBoundary honestyFunctionsCode gridNIR vs HIRSource · dual layerHIR vs GhidraReadability · side by sideVariantsCompiler × optMeasurementScope · healthQuality EXTBare-compile · readabilitySpeedDecompile latencyUnofficial CorpusDecBench scaleFission ↔ GhidraShared IRReleasesTrend · what changedGitHub →
Fission Benchmark · Overview · Functions · Measurement · Quality EXT · Speed · IR parity · ISR 15 minfission-systems/fission-benchmark
✅
VALID RUN
Fission 213/216 (98.6%), all-backend 428/432 (99.1%)
Measured 8/20/2026, 2:10:22 AM UTC
Statusofficial · stale · 36dCorpusdevFunctions36Decompilers2Contractrelease-baseline-v1 · 216 subjectsMeasured8/20/2026, 2:10:22 AM UTCBuildv0.2.2 @ c9d82f27

Decompile speed

Wall time from the decompiler adapter (time_ms on each row) — typically one binary batch decompile, amortized per function. Semantic / wine / oracle time is not included. This page is a non-ranking practicality diagnostic (same policy as Quality EXT). Optional summary.extensions.speed.microbench cold/warm trials come from the isolated Speed Smoke CI job.

Fission mean

1.37s

n=213 · p95 3.05s

Fission p50

1.19s

Median decompile latency

Ghidra mean

11.71s

n=215 · p95 27.42s

Paired speedup

8.54×

median ghidra/fission · n=212 pairs · geo 8.81×

Fission faster

100%

Share of paired cells with fission_ms < ghidra_ms

Micro-bench (cold vs warm)

Same binary × addresses, N timed /decompile_batch requests. Cold = trial 0; warm = trials 1..N−1 (no container restart). Schema: speed-microbench-v2 · source: benchmark envelope · Fission version not recorded · measured: 8/5/2026, 6:06:39 PM UTC — cold = first timed /decompile_batch after optional discarded warmups; warm = trials 2..N on the same process (no container restart). adapter_ms prefers server-reported time_ms; wall_ms is client RTT. When --container is set, CPU and memory are sampled concurrently from Docker container cgroups. CPU may exceed 100% on multicore hosts; peak memory is the maximum observed sample, not an OS high-water mark.

DecompilerCold meanCold p50Cold nWarm meanWarm p50Warm nCPU meanCPU peakMemory peakMemory %Samples
fission6.32s6.32s11.71s1.72s447.3%106.7%441.7 MiB2.8%48
ghidra18.48s18.48s15.70s5.68s4171.5%284.7%983.5 MiB6.2%162

Resource scope is the whole adapter container cgroup, including the long-lived runtime and child processes. CPU may exceed 100% on multicore runners. Memory peak is the largest Docker sample observed during timed requests, not an operating-system high-water mark.

By decompiler (envelope rows)

Adapter decompile wall time per row (time_ms). Excludes semantic/oracle. Not a ranking axis.

DecompilerTimedMissingMeanp50p95MinMaxSum
fission21331.37s1.19s3.05s333ms4.28s291.58s
ghidra215111.71s9.59s27.42s4.68s39.76s2517.18s

Fission ↔ Ghidra (paired)

Same function × variant. Speedup= ghidra_ms / fission_ms (>1 ⇒ Fission faster). Sorted by slowest Fission first. Showing top 40 of 212.

FunctionVariantFissionGhidraSpeedup
manipulate_bitfieldsgcc -O04.28s39.76s9.29×
matrix_multiplygcc -O04.28s39.76s9.29×
manipulate_bitfieldsgcc-m32 -O24.16s25.39s6.10×
matrix_multiplygcc-m32 -O24.16s25.39s6.10×
find_substringgcc-m32 -O23.89s14.13s3.63×
reverse_stringgcc-m32 -O23.89s14.13s3.63×
find_substringgcc-m32 -O03.71s37.55s10.13×
reverse_stringgcc-m32 -O03.71s37.55s10.13×

Slowest Fission functions

Fission-only, aggregated across variants (mean / p95 / max).

FunctionnMeanp95Max
manipulate_bitfields63.13s4.25s4.28s
matrix_multiply63.13s4.25s4.28s
find_substring62.82s3.85s3.89s
reverse_string62.82s3.85s3.89s
crc3261.76s2.96s3.05s
rc4_crypt61.76s2.96s3.05s
rc4_init61.76s2.96s3.05s
find_pair_value61.36s2.22s2.42s

Fission by compiler variant

Fission mean / p50 by compiler_variant.

VariantnMeanp50
clang -O2331.88s1.86s
gcc-m32 -O2361.55s1.19s
gcc-m32 -O0361.53s1.33s
gcc -O0361.44s1.33s
gcc -O236971ms1.08s
clang -O036878ms799ms
manipulate_bitfields
gcc-m32 -O0
3.29s
24.50s
7.44×
matrix_multiplygcc-m32 -O03.29s24.50s7.44×
crc32clang -O23.05s26.07s8.54×
rc4_cryptclang -O23.05s26.07s8.54×
rc4_initclang -O23.05s26.07s8.54×
find_substringclang -O02.99s31.90s10.68×
reverse_stringclang -O02.99s31.90s10.68×
find_substringgcc -O02.90s29.43s10.14×
reverse_stringgcc -O02.90s29.43s10.14×
manipulate_bitfieldsgcc -O22.70s27.42s10.15×
matrix_multiplygcc -O22.70s27.42s10.15×
crc32gcc-m32 -O02.70s16.70s6.18×
rc4_cryptgcc-m32 -O02.70s16.70s6.18×
rc4_initgcc-m32 -O02.70s16.70s6.18×
find_pair_valueclang -O22.42s11.13s4.59×
pointer_stride_sumclang -O22.42s11.13s4.59×
reverse_in_placeclang -O22.42s11.13s4.59×
sum_arrayclang -O22.42s11.13s4.59×
manipulate_bitfieldsclang -O02.29s27.36s11.92×
matrix_multiplyclang -O02.29s27.36s11.92×
bounded_tlv_sumclang -O22.10s9.49s4.53×
mixed_width_accumulateclang -O22.10s9.49s4.53×
rolling_hash32clang -O22.10s9.49s4.53×
rotate_wordsclang -O22.10s9.49s4.53×
state_machine_scoreclang -O22.10s9.49s4.53×
manipulate_bitfieldsclang -O22.05s28.30s13.80×
matrix_multiplyclang -O22.05s28.30s13.80×
checksumgcc-m32 -O21.86s10.12s5.43×
clampgcc-m32 -O21.86s10.12s5.43×
count_bitsgcc-m32 -O21.86s10.12s5.43×
saturating_addgcc-m32 -O21.86s10.12s5.43×
signumgcc-m32 -O21.86s10.12s5.43×
pointer_stride_sum61.36s2.22s2.42s
reverse_in_place61.36s2.22s2.42s
sum_array61.36s2.22s2.42s
bounded_tlv_sum61.17s1.90s2.10s
mixed_width_accumulate61.17s1.90s2.10s
rolling_hash3261.17s1.90s2.10s
rotate_words61.17s1.90s2.10s
state_machine_score61.17s1.90s2.10s
accumulate_pairs51.14s1.59s1.63s
checksum61.13s1.76s1.86s
clamp61.13s1.76s1.86s
count_bits61.13s1.76s1.86s
saturating_add61.13s1.76s1.86s
signum61.13s1.76s1.86s
add_ints61.04s1.75s1.86s
apply_binop61.04s1.75s1.86s
bounded_checksum61.04s1.75s1.86s
kv_lookup61.04s1.75s1.86s
list_sum61.04s1.75s1.86s
mul_ints61.04s1.75s1.86s
overlap_move5990ms1.30s1.33s
bubble_sort6960ms1.23s1.25s