FPNG Java

FPNG-Java provides Java wrappers around two native, SIMD-optimised PNG encoders — FPNG (SSE2) and FPNGE (AVX2). Both produce fully compliant PNG files at significantly higher throughput than javax.imageio.

The JDK23+ version of the encoders uses Foreign Function & Memory API and is the fastest. Otherwise JNI is used via JNA, which comes with some overhead.

Latest stable release: fpng-java-1.6.10.jar

GitHub Repository: https://github.com/manticore-projects/fpng-java

Features

  • Two encoders with automatic runtime selection
    • FPNG — SSE2/SSE4.1/PCLMUL, works on any x86-64 CPU

    • FPNGE — AVX2, used automatically when the CPU supports it

  • FFM for JDK22+, JNI/JNA for older JDKs

  • Runtime hasAVX2() CPUID probe — no AVX2 library is loaded on unsupported hardware

  • Encodes BufferedImage directly — 3-channel (RGB) and 4-channel (RGBA)

  • Handles Java’s native TYPE_3BYTE_BGR / TYPE_4BYTE_ABGR channel order in C via SIMD byte shuffles

  • Interleaved Adler32 checksum — no redundant full-image pass

  • PCLMUL-accelerated CRC32

  • Supports Java 8, Java 11, Java 17 and Java 21

  • Platforms: Linux x86-64, Windows x86/x86-64, macOS x86-64

Benchmarks

Run the JMH benchmarks with:

./gradlew jmh

Results are written to benchmark/build/results/jmh/results.json.

Speed

JMH PNG Encoder Benchmark Report

PNG Encoder Benchmark Report

Generated by Manticore Projects · JMH ms/op · lower is better

3 ch example.png

Encoder Score (ms/op) Error vs Winner
FPNG Encoder (Java 23) 1.291 ±NaN baseline
FPNG Encoder (JNI) 1.468 ±NaN +13.7%
FPNGE (Java 23 FFM) 1.476 ±NaN +14.3%
FPNGE (Java 23 FFM) 1.502 ±NaN +16.4%
FPNGE (JNI) 1.558 ±NaN +20.7%
FPNGE (JNI) 1.599 ±NaN +23.9%
FPNG Encoder (Java 23) 1.635 ±NaN +26.7%
FPNGE (Java 23 FFM) 1.718 ±NaN +33.1%
FPNGE (JNI) 1.807 ±NaN +40.0%
FPNGE (Java 23 FFM) 1.891 ±NaN +46.5%
FPNG Encoder (JNI) 1.899 ±NaN +47.1%
FPNGE (JNI) 1.977 ±NaN +53.2%
FPNGE (Java 23 FFM) 2.230 ±NaN +72.8%
FPNGE (JNI) 2.318 ±NaN +79.6%
FPNG Encoder (Java 23) 3.108 ±NaN +140.8%
FPNG Encoder (JNI) 3.912 ±NaN +203.1%
FPNG Encoder (JNI) 4.492 ±NaN +248.0%
FPNG Encoder (Java 23) 5.025 ±NaN +289.3%
FPNG Encoder (Java 23) 5.035 ±NaN +290.1%
FPNG Encoder (JNI) 5.120 ±NaN +296.7%
PNGEncoder (fastest) 18.713 ±NaN +1349.9%
PNGEncoder (fastest) 31.962 ±NaN +2376.5%
PNGEncoder (fastest) 33.427 ±NaN +2490.0%
PNGEncoder (fastest) 33.435 ±NaN +2490.6%
PNGEncoder (fastest) 35.085 ±NaN +2618.4%
PNGEncoder 42.974 ±NaN +3229.7%
ObjectPlanet PNG 47.853 ±NaN +3607.7%
ObjectPlanet PNG 48.001 ±NaN +3619.2%
ObjectPlanet PNG 48.042 ±NaN +3622.4%
ObjectPlanet PNG 48.073 ±NaN +3624.8%
ObjectPlanet PNG 48.266 ±NaN +3639.7%
ImageIO 52.772 ±NaN +3988.8%
ImageIO 52.878 ±NaN +3997.1%
ImageIO 52.892 ±NaN +3998.1%
ImageIO 52.934 ±NaN +4001.4%
ImageIO 52.960 ±NaN +4003.4%
PNGEncoder 55.342 ±NaN +4188.0%
PNGEncoder 55.839 ±NaN +4226.5%
PNGEncoder 57.150 ±NaN +4328.1%
PNGEncoder 58.383 ±NaN +4423.7%

3 ch looklet-look-scale6.png

Encoder Score (ms/op) Error vs Winner
FPNGE (Java 23 FFM) 55.129 ±NaN baseline
FPNGE (Java 23 FFM) 57.617 ±NaN +4.5%
FPNGE (Java 23 FFM) 67.137 ±NaN +21.8%
FPNGE (JNI) 71.876 ±NaN +30.4%
FPNGE (Java 23 FFM) 72.971 ±NaN +32.4%
FPNGE (JNI) 73.540 ±NaN +33.4%
FPNGE (JNI) 81.978 ±NaN +48.7%
FPNGE (Java 23 FFM) 88.685 ±NaN +60.9%
FPNGE (JNI) 88.883 ±NaN +61.2%
FPNGE (JNI) 104.489 ±NaN +89.5%
FPNG Encoder (Java 23) 132.261 ±NaN +139.9%
FPNG Encoder (Java 23) 137.870 ±NaN +150.1%
FPNG Encoder (JNI) 185.851 ±NaN +237.1%
FPNG Encoder (JNI) 192.518 ±NaN +249.2%
FPNG Encoder (Java 23) 208.851 ±NaN +278.8%
FPNG Encoder (JNI) 249.721 ±NaN +353.0%
PNGEncoder (fastest) 301.553 ±NaN +447.0%
FPNG Encoder (Java 23) 307.356 ±NaN +457.5%
FPNG Encoder (Java 23) 319.332 ±NaN +479.2%
FPNG Encoder (JNI) 366.217 ±NaN +564.3%
FPNG Encoder (JNI) 366.486 ±NaN +564.8%
PNGEncoder (fastest) 503.651 ±NaN +813.6%
PNGEncoder (fastest) 660.291 ±NaN +1097.7%
PNGEncoder (fastest) 829.792 ±NaN +1405.2%
PNGEncoder (fastest) 954.261 ±NaN +1631.0%
PNGEncoder 1125.140 ±NaN +1940.9%
ImageIO 1248.655 ±NaN +2165.0%
ImageIO 1248.867 ±NaN +2165.3%
ImageIO 1251.001 ±NaN +2169.2%
ImageIO 1251.095 ±NaN +2169.4%
ImageIO 1257.685 ±NaN +2181.3%
PNGEncoder 1307.763 ±NaN +2272.2%
PNGEncoder 1463.246 ±NaN +2554.2%
PNGEncoder 1631.563 ±NaN +2859.5%
PNGEncoder 1757.153 ±NaN +3087.3%
ObjectPlanet PNG 2239.176 ±NaN +3961.7%
ObjectPlanet PNG 2239.810 ±NaN +3962.8%
ObjectPlanet PNG 2240.248 ±NaN +3963.6%
ObjectPlanet PNG 2242.885 ±NaN +3968.4%
ObjectPlanet PNG 2243.183 ±NaN +3969.0%

4 ch example.png

Encoder Score (ms/op) Error vs Winner
FPNG Encoder (Java 23) 1.300 ±NaN baseline
FPNG Encoder (Java 23) 1.302 ±NaN +0.2%
FPNGE (Java 23 FFM) 1.780 ±NaN +36.9%
FPNGE (Java 23 FFM) 1.815 ±NaN +39.6%
FPNGE (JNI) 1.877 ±NaN +44.4%
FPNGE (JNI) 1.958 ±NaN +50.6%
FPNG Encoder (JNI) 2.000 ±NaN +53.8%
FPNG Encoder (JNI) 2.060 ±NaN +58.5%
FPNGE (Java 23 FFM) 2.078 ±NaN +59.8%
FPNGE (JNI) 2.212 ±NaN +70.2%
FPNGE (Java 23 FFM) 2.299 ±NaN +76.8%
FPNGE (JNI) 2.438 ±NaN +87.5%
FPNGE (Java 23 FFM) 2.729 ±NaN +109.9%
FPNGE (JNI) 2.884 ±NaN +121.8%
FPNG Encoder (Java 23) 3.739 ±NaN +187.6%
FPNG Encoder (JNI) 5.241 ±NaN +303.1%
FPNG Encoder (Java 23) 5.417 ±NaN +316.6%
FPNG Encoder (Java 23) 5.423 ±NaN +317.1%
FPNG Encoder (JNI) 6.179 ±NaN +375.2%
FPNG Encoder (JNI) 6.829 ±NaN +425.2%
PNGEncoder (fastest) 23.905 ±NaN +1738.6%
PNGEncoder (fastest) 40.121 ±NaN +2985.8%
PNGEncoder (fastest) 43.114 ±NaN +3216.0%
PNGEncoder (fastest) 43.735 ±NaN +3263.7%
PNGEncoder (fastest) 45.700 ±NaN +3414.9%
PNGEncoder 49.234 ±NaN +3686.7%
ObjectPlanet PNG 60.945 ±NaN +4587.4%
ObjectPlanet PNG 61.008 ±NaN +4592.2%
ObjectPlanet PNG 61.017 ±NaN +4593.0%
ObjectPlanet PNG 61.120 ±NaN +4600.8%
ObjectPlanet PNG 61.202 ±NaN +4607.2%
PNGEncoder 64.817 ±NaN +4885.2%
ImageIO 65.604 ±NaN +4945.7%
ImageIO 65.937 ±NaN +4971.3%
ImageIO 67.054 ±NaN +5057.2%
ImageIO 67.260 ±NaN +5073.1%
ImageIO 68.018 ±NaN +5131.4%
PNGEncoder 68.019 ±NaN +5131.5%
PNGEncoder 70.106 ±NaN +5292.0%
PNGEncoder 73.690 ±NaN +5567.6%

4 ch looklet-look-scale6.png

Encoder Score (ms/op) Error vs Winner
FPNGE (Java 23 FFM) 68.846 ±NaN baseline
FPNGE (Java 23 FFM) 72.568 ±NaN +5.4%
FPNGE (Java 23 FFM) 84.805 ±NaN +23.2%
FPNGE (JNI) 92.127 ±NaN +33.8%
FPNGE (Java 23 FFM) 93.988 ±NaN +36.5%
FPNGE (JNI) 95.676 ±NaN +39.0%
FPNGE (JNI) 107.711 ±NaN +56.5%
FPNGE (Java 23 FFM) 112.585 ±NaN +63.5%
FPNGE (JNI) 114.824 ±NaN +66.8%
FPNGE (JNI) 133.177 ±NaN +93.4%
FPNG Encoder (Java 23) 216.603 ±NaN +214.6%
FPNG Encoder (Java 23) 218.178 ±NaN +216.9%
FPNG Encoder (Java 23) 262.256 ±NaN +280.9%
FPNG Encoder (JNI) 309.579 ±NaN +349.7%
FPNG Encoder (JNI) 316.119 ±NaN +359.2%
FPNG Encoder (JNI) 330.406 ±NaN +379.9%
FPNG Encoder (Java 23) 411.250 ±NaN +497.3%
FPNG Encoder (Java 23) 430.383 ±NaN +525.1%
PNGEncoder (fastest) 434.307 ±NaN +530.8%
FPNG Encoder (JNI) 480.796 ±NaN +598.4%
FPNG Encoder (JNI) 487.523 ±NaN +608.1%
PNGEncoder (fastest) 622.864 ±NaN +804.7%
PNGEncoder (fastest) 820.126 ±NaN +1091.2%
PNGEncoder (fastest) 1007.278 ±NaN +1363.1%
PNGEncoder (fastest) 1145.369 ±NaN +1563.7%
PNGEncoder 1464.177 ±NaN +2026.7%
ImageIO 1527.645 ±NaN +2118.9%
ImageIO 1530.446 ±NaN +2123.0%
ImageIO 1532.689 ±NaN +2126.3%
ImageIO 1535.153 ±NaN +2129.8%
ImageIO 1535.580 ±NaN +2130.5%
PNGEncoder 1613.672 ±NaN +2243.9%
PNGEncoder 1849.022 ±NaN +2585.7%
PNGEncoder 2061.763 ±NaN +2894.7%
PNGEncoder 2224.811 ±NaN +3131.6%
ObjectPlanet PNG 2665.442 ±NaN +3771.6%
ObjectPlanet PNG 2670.048 ±NaN +3778.3%
ObjectPlanet PNG 2673.009 ±NaN +3782.6%
ObjectPlanet PNG 2673.295 ±NaN +3783.0%
ObjectPlanet PNG 2674.534 ±NaN +3784.8%
Manticore Projects © 2026 · JMH benchmark report · JDK 23 · Serial GC · 1×3 fork/iteration

Efficiency

JMH PNG Encoder Pareto Report

PNG Encoder Pareto Report

Generated by Manticore Projects · encode time vs. file size · lower-left is better

3 ch example.png

Overall best FPNGE (Java 23 FFM) at level 2 — 1.50 ms, 1383.4 KB
overall winner
per-encoder knee
pareto-optimal
dominated

FPNG Encoder (JNI)

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 5.12 ±NaN 1444.6 70.9%
2 PARETO 1.47 ±NaN 2038.1 100.0%
3 dominated 1.90 ±NaN 2038.1 100.0%
4 KNEE 3.91 ±NaN 1511.0 74.1%
5 PARETO 4.49 ±NaN 1444.6 70.9%

FPNG Encoder (Java 23)

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 5.03 ±NaN 1444.6 70.9%
2 dominated 1.63 ±NaN 2038.1 100.0%
3 PARETO 1.29 ±NaN 2038.1 100.0%
4 KNEE 3.11 ±NaN 1511.0 74.1%
5 PARETO 5.02 ±NaN 1444.6 70.9%

FPNGE (JNI)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 1.56 ±NaN 1516.6 100.0%
2 KNEE 1.60 ±NaN 1383.4 91.2%
3 PARETO 1.81 ±NaN 1377.4 90.8%
4 dominated 1.98 ±NaN 1378.3 90.9%
5 dominated 2.32 ±NaN 1378.0 90.9%

FPNGE (Java 23 FFM)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 1.48 ±NaN 1516.6 100.0%
2 WINNER 1.50 ±NaN 1383.4 91.2%
3 PARETO 1.72 ±NaN 1377.4 90.8%
4 dominated 1.89 ±NaN 1378.3 90.9%
5 dominated 2.23 ±NaN 1378.1 90.9%

ImageIO

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 52.96 ±NaN 1751.1 100.0%
2 dominated 52.93 ±NaN 1751.1 100.0%
3 PARETO 52.77 ±NaN 1751.1 100.0%
4 dominated 52.89 ±NaN 1751.1 100.0%
5 dominated 52.88 ±NaN 1751.1 100.0%

ObjectPlanet PNG

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 47.85 ±NaN 1750.3 100.0%
2 dominated 48.27 ±NaN 1750.3 100.0%
3 dominated 48.07 ±NaN 1750.3 100.0%
4 dominated 48.04 ±NaN 1750.3 100.0%
5 dominated 48.00 ±NaN 1750.3 100.0%

PNGEncoder

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 42.97 ±NaN 1995.5 100.0%
1 PARETO 18.71 ±NaN 1995.5 100.0%
2 dominated 55.34 ±NaN 1752.5 87.8%
2 KNEE 31.96 ±NaN 1752.5 87.8%
3 dominated 55.84 ±NaN 1751.3 87.8%
3 dominated 33.44 ±NaN 1751.3 87.8%
4 dominated 57.15 ±NaN 1751.1 87.8%
4 PARETO 33.43 ±NaN 1751.1 87.8%
5 dominated 58.38 ±NaN 1751.0 87.7%
5 PARETO 35.08 ±NaN 1751.0 87.7%

3 ch looklet-look-scale6.png

Overall best PNGEncoder at level 3 — 660.29 ms, 23386.5 KB
overall winner
per-encoder knee
pareto-optimal
dominated

FPNG Encoder (JNI)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 366.22 ±NaN 32160.1 37.3%
2 PARETO 185.85 ±NaN 86145.3 100.0%
3 dominated 192.52 ±NaN 86145.3 100.0%
4 KNEE 249.72 ±NaN 34974.3 40.6%
5 dominated 366.49 ±NaN 32160.1 37.3%

FPNG Encoder (Java 23)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 307.36 ±NaN 32160.1 37.3%
2 PARETO 132.26 ±NaN 86145.3 100.0%
3 dominated 137.87 ±NaN 86145.3 100.0%
4 KNEE 208.85 ±NaN 34974.3 40.6%
5 dominated 319.33 ±NaN 32160.1 37.3%

FPNGE (JNI)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 71.88 ±NaN 35755.4 100.0%
2 KNEE 73.54 ±NaN 34477.5 96.4%
3 PARETO 81.98 ±NaN 33046.1 92.4%
4 dominated 88.88 ±NaN 33193.3 92.8%
5 dominated 104.49 ±NaN 33115.0 92.6%

FPNGE (Java 23 FFM)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 55.13 ±NaN 35755.4 100.0%
2 KNEE 57.62 ±NaN 34477.5 96.4%
3 PARETO 67.14 ±NaN 33046.1 92.4%
4 dominated 72.97 ±NaN 33193.3 92.8%
5 dominated 88.68 ±NaN 33115.0 92.6%

ImageIO

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 1251.00 ±NaN 22729.3 100.0%
2 PARETO 1248.66 ±NaN 22729.3 100.0%
3 dominated 1257.68 ±NaN 22729.3 100.0%
4 dominated 1248.87 ±NaN 22729.3 100.0%
5 dominated 1251.10 ±NaN 22729.3 100.0%

ObjectPlanet PNG

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 2242.89 ±NaN 22058.8 100.0%
2 dominated 2240.25 ±NaN 22058.8 100.0%
3 PARETO 2239.18 ±NaN 22058.8 100.0%
4 dominated 2243.18 ±NaN 22058.8 100.0%
5 dominated 2239.81 ±NaN 22058.8 100.0%

PNGEncoder

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 1125.14 ±NaN 33877.9 100.0%
1 PARETO 301.55 ±NaN 33877.9 100.0%
2 dominated 1307.76 ±NaN 25338.1 74.8%
2 KNEE 503.65 ±NaN 25338.1 74.8%
3 dominated 1463.25 ±NaN 23386.5 69.0%
3 WINNER 660.29 ±NaN 23386.5 69.0%
4 dominated 1631.56 ±NaN 22729.3 67.1%
4 PARETO 829.79 ±NaN 22729.3 67.1%
5 dominated 1757.15 ±NaN 22595.9 66.7%
5 PARETO 954.26 ±NaN 22595.9 66.7%

4 ch example.png

Overall best FPNGE (Java 23 FFM) at level 2 — 1.81 ms, 1582.3 KB
overall winner
per-encoder knee
pareto-optimal
dominated

FPNG Encoder (JNI)

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 6.83 ±NaN 1659.2 61.1%
2 PARETO 2.00 ±NaN 2717.1 100.0%
3 dominated 2.06 ±NaN 2717.1 100.0%
4 KNEE 5.24 ±NaN 1739.6 64.0%
5 PARETO 6.18 ±NaN 1659.2 61.1%

FPNG Encoder (Java 23)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 5.42 ±NaN 1659.2 61.1%
2 dominated 1.30 ±NaN 2717.1 100.0%
3 PARETO 1.30 ±NaN 2717.1 100.0%
4 KNEE 3.74 ±NaN 1739.6 64.0%
5 dominated 5.42 ±NaN 1659.2 61.1%

FPNGE (JNI)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 1.88 ±NaN 1716.4 100.0%
2 KNEE 1.96 ±NaN 1582.3 92.2%
3 PARETO 2.21 ±NaN 1575.0 91.8%
4 dominated 2.44 ±NaN 1575.5 91.8%
5 dominated 2.88 ±NaN 1577.2 91.9%

FPNGE (Java 23 FFM)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 1.78 ±NaN 1716.4 100.0%
2 WINNER 1.81 ±NaN 1582.3 92.2%
3 PARETO 2.08 ±NaN 1575.0 91.8%
4 dominated 2.30 ±NaN 1575.5 91.8%
5 dominated 2.73 ±NaN 1577.2 91.9%

ImageIO

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 67.26 ±NaN 1937.6 100.0%
2 dominated 65.94 ±NaN 1937.6 100.0%
3 dominated 68.02 ±NaN 1937.6 100.0%
4 PARETO 65.60 ±NaN 1937.6 100.0%
5 dominated 67.05 ±NaN 1937.6 100.0%

ObjectPlanet PNG

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 61.12 ±NaN 1936.1 100.0%
2 dominated 61.02 ±NaN 1936.1 100.0%
3 dominated 61.01 ±NaN 1936.1 100.0%
4 dominated 61.20 ±NaN 1936.1 100.0%
5 PARETO 60.94 ±NaN 1936.1 100.0%

PNGEncoder

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 49.23 ±NaN 2513.6 100.0%
1 PARETO 23.91 ±NaN 2513.6 100.0%
2 dominated 64.82 ±NaN 1950.7 77.6%
2 KNEE 40.12 ±NaN 1950.7 77.6%
3 dominated 68.02 ±NaN 1938.8 77.1%
3 PARETO 43.11 ±NaN 1938.8 77.1%
4 dominated 70.11 ±NaN 1937.6 77.1%
4 PARETO 43.73 ±NaN 1937.6 77.1%
5 dominated 73.69 ±NaN 1936.9 77.1%
5 PARETO 45.70 ±NaN 1936.9 77.1%

4 ch looklet-look-scale6.png

Overall best PNGEncoder at level 4 — 1007.28 ms, 24479.4 KB
overall winner
per-encoder knee
pareto-optimal
dominated

FPNG Encoder (JNI)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 480.80 ±NaN 36097.1 31.4%
2 dominated 316.12 ±NaN 114858.5 100.0%
3 PARETO 309.58 ±NaN 114858.5 100.0%
4 KNEE 330.41 ±NaN 40683.7 35.4%
5 dominated 487.52 ±NaN 36097.1 31.4%

FPNG Encoder (Java 23)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 411.25 ±NaN 36097.1 31.4%
2 PARETO 216.60 ±NaN 114858.5 100.0%
3 dominated 218.18 ±NaN 114858.5 100.0%
4 KNEE 262.26 ±NaN 40683.7 35.4%
5 dominated 430.38 ±NaN 36097.1 31.4%

FPNGE (JNI)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 92.13 ±NaN 39553.3 100.0%
2 KNEE 95.68 ±NaN 38040.0 96.2%
3 PARETO 107.71 ±NaN 37332.5 94.4%
4 PARETO 114.82 ±NaN 36753.7 92.9%
5 PARETO 133.18 ±NaN 36673.4 92.7%

FPNGE (Java 23 FFM)

Lvl Status Time (ms) Size (KB) Ratio
1 PARETO 68.85 ±NaN 39553.3 100.0%
2 KNEE 72.57 ±NaN 38040.0 96.2%
3 PARETO 84.80 ±NaN 37332.5 94.4%
4 PARETO 93.99 ±NaN 36753.7 92.9%
5 PARETO 112.59 ±NaN 36673.4 92.7%

ImageIO

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 1532.69 ±NaN 24479.3 100.0%
2 dominated 1535.58 ±NaN 24479.3 100.0%
3 PARETO 1527.65 ±NaN 24479.3 100.0%
4 dominated 1530.45 ±NaN 24479.3 100.0%
5 dominated 1535.15 ±NaN 24479.3 100.0%

ObjectPlanet PNG

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 2674.53 ±NaN 23594.6 100.0%
2 PARETO 2665.44 ±NaN 23594.6 100.0%
3 dominated 2670.05 ±NaN 23594.6 100.0%
4 dominated 2673.30 ±NaN 23594.6 100.0%
5 dominated 2673.01 ±NaN 23594.6 100.0%

PNGEncoder

Lvl Status Time (ms) Size (KB) Ratio
1 dominated 1464.18 ±NaN 44351.3 100.0%
1 PARETO 434.31 ±NaN 44351.3 100.0%
2 dominated 1613.67 ±NaN 28362.7 64.0%
2 KNEE 622.86 ±NaN 28362.7 64.0%
3 dominated 1849.02 ±NaN 25759.2 58.1%
3 PARETO 820.13 ±NaN 25759.2 58.1%
4 dominated 2061.76 ±NaN 24479.4 55.2%
4 WINNER 1007.28 ±NaN 24479.4 55.2%
5 dominated 2224.81 ±NaN 24196.8 54.6%
5 PARETO 1145.37 ±NaN 24196.8 54.6%
Manticore Projects © 2026 · Pareto frontier marks non-dominated (encoder, level) combinations · knee = perpendicular-distance maximum on normalized axes