Compare implementations
Two numbers may be put side by side when they came from the same point on the same machine. Everything on this page follows from that.
IMPLEMENTATIONS3POINTS MEASURED23MACHINES3COMPARABLE PAIRS2
WHERE NUMBERS EXIST30 of 207 cells measured
fairmath-fpga
fairmath-general-runner
fherma-general-purpose
AXPY over CKKS
CKKS implementation
One plaintext multiplication, over Poulpy
every seed passedsome seeds failedclaimed, not measurednot claimed
N1024 on fairmath-general-runner
Same point, same machine, same environment. These times mean the same thing, so they can be read against each other.
POINT
MACHINE
IMPLEMENTATIONMEDIANACCURACYSECURITYRINGCAPACITYKEYSMEMORYSEEDS
01CKKS implementationg-arakelovCKKSOpenFHE266 µsfastest hereexactbyte for byte128-bitenforced163842 levels0 spentnone23 MBpeak3 of 3
02AXPY over CKKSgurgen2ckksopenfhe310 µs×1.16 of fastestexactbyte for byte128-bitenforced163842 levels0 spentnone21 MBpeak2 of 2
03One plaintext multiplication, over Poulpygurgen2ckkspoulpyrust623 µs×2.34 of fastestexactbyte for byte128-bitestimated4096109 bitstorusnone16 MBpeak3 of 3
HOW ACCURACY IS JUDGED
Every accuracy figure here is the output of the verifier in this specification’s testing bundle — one function, run against what each seed left behind. It travels with the specification, so every implementation is judged by the same code.THE ONE RULE
A time means nothing without the point it was measured at and the machine it ran on. Fixing both gives a comparison; releasing either gives a reading of something else — how an implementation scales, or where it runs. Nothing on this page averages across machines, and no implementation is judged on a point it never claimed.