Skip to content

Latest commit

 

History

History
72 lines (49 loc) · 1.95 KB

BENCHMARKS.md

File metadata and controls

72 lines (49 loc) · 1.95 KB

Intro

Some people have expressed opinions about how fast libb64's encoding and decoding routines are, as compared to some other BASE64 packages out there.

This document shows the result of a short and sweet benchmark, which takes a large-ish file and encodes/decodes it a number of times. The winner is the executable that does this task the quickest.

Platform

The tests were all run on a Fujitsu-Siemens laptop, with a Pentium M processor running at 2 GHz, with 1 GB of RAM, running Ubuntu 10.4.

Packages

The following BASE64 packages were used in this benchmark:

  • libb64-1.2 (libb64-base64) From libb64.sourceforge.net Size of executable: 18808 bytes Compiled with: CFLAGS += -O3 BUFFERSIZE = 16777216

  • base64-1.5 (fourmilab-base64) From http://www.fourmilab.ch/webtools/base64/ Size of executable: 20261 bytes Compiled with Default package settings

  • coreutils 7.4-2ubuntu2 (coreutils-base64) From http://www.gnu.org/software/coreutils/ Size of executable: 38488 bytes Default binary distributed with Ubuntu 10.4

Input File

Using blender-2.49b-linux-glibc236-py25-i386.tar.bz2 from http://www.blender.org/download/get-blender/ Size: 18285329 bytes (approx. 18 MB)

Method

Encode and Decode the Input file 50 times in a loop, using a simple shell script, and get the running time.

Results

$ time ./benchmark-libb64.sh
real    0m28.389s
user    0m14.077s
sys     0m12.309s

$ time ./benchmark-fourmilab.sh
real    1m43.160s
user    1m23.769s
sys     0m8.737s

$ time ./benchmark-coreutils.sh
real    0m36.288s
user    0m24.746s
sys     0m8.181s

28.389 for 18 MB * 50
= 28.389 for 900 MB

Conclusion

libb64 is the fastest encoder/decoder, and has the smallest executable size.

On average it will encode and decode at roughly 31.7 MB/second.

The closest "competitor" is base64 from GNU coreutils, which reaches only 24.8 MB/second.

-- 14/06/2010 [email protected]