[erlang-questions] erlang:md5/1 vs crypto:md5/1 difference: speed

Lev Walkin <>
Sat Jan 31 11:28:19 CET 2009


Scott Lystig Fritchie wrote:
> Hi, all.  Two years ago, Roberta Saccon asked a question of the
> difference between erlang:md5/1 vs crypto:md5/1.
> 
> One answer was, "none."  Another answer was, "You need to start the
> crypto application before calling crypto:md5/1."
> 
> I've discovered a third answer: speed.  On a newer Intel Xeon single
> CPU, dual-core box @ 2.33GHz, and on an AMD X2 single CPU, dual-core
> box, crypto:md5/1 is 3.0-3.5 times faster on a 64KByte blob than
> erlang:md5.  On an older 3.4GHz single core Xeon, the difference is over
> almost 7x, and on a several-year-old Pentium M laptop @ 1.33GHz, the
> difference is 8x.(*)
> 
> I'm curious ... do others see similar differences?  Or is erlang:md5/1
> faster on some platforms, e.g. PowerPC?

On PowerPC G4 (1.5 GHz) the difference is up to 10x in favor of 
crypto:md5/1. However, it seem to vary greatly depending on the input size.

The following chart summarizes the findings.

Blob size	erlang:md5	crypto:md5	winner
(bytes)		(ops/seconds)	(ops/second)

34		132778		98205		erlang ~35% faster
63		122425		92851		erlang
65		121247		93296		erlang
80		119739		93464		erlang
90		112531		92757		erlang
95		118074		94302		erlang
100		120783		99943		erlang ~28% faster
101		64845		97556		crypto ~51% faster
102		63076		93717		crypto
103		64369		95260		crypto
104		63359		92948		crypto
105		63638		95318		crypto
110		64147		98937		crypto
120		63961		92614		crypto
161		61173		94997		crypto ~55% faster
204		41394		92266		crypto ~120% faster
49242		304		2627		crypto ~750% faster
499242		29		265		crypto ~800% faster
4999242		~3		23		crypto


So it appears that erlang:md5/1 is up to 35% faster on data less than 
100 bytes long, and crypto:md5/1 is up to 10x faster asymptotically.


-- 
Lev Walkin




More information about the erlang-questions mailing list