MD5 Code Optimizations

We modified the MD5 reference implementation to affect caching and to be optimized.
A compressed TAR file is available with these changes:
- Cache modifications (mddriver.c)
- -l num : specify length of test block (used with -t, was DEFINE'd)
- -c num : specify block repeat count (used with -t, was DEFIN'd)
- -s : skip initialization of test block (to avoid first-touch of data)
- -r : pseudo-random test block init (determines data-dependent perf)
- -d : double-buffer test block (switch-off - forces data out of the cache)
- Performance optimizations (md5c.c)
- use memset() and memcpy() (as suggested)
- force state variables into registers
- avoid Decode() for little-endians (Intel ix86, Dec Alpha)
- avoid block copy for little-endians (Intel ix86, Dec Alpha)
- unroll swap loop in Decode()
- use optimized byte reordering code (C code that compiles better)
- Other changes
- replace time() with getrusage()
- change block length to 1M from 1K
- print bits/sec
- change LEN and COUNT in status print - they were incorrect

Go back to the ATOMIC-2 home page. / Go back to the ISI home page.
This page written and maintained by the
ATOMIC-2 group.
Please mail us any problems with or
comments about this page.
Last modified Sept 24, 1997.