>> 11/25/03 01:44:46 AM PROCEDURE SERIES_ D:\DEV\SUB\ZRBJ\TEST\BENCH_CRYPTOAPI_MD5_VS_MD5.FXP Visual FoxPro 03.00.00.0711 für Windows # loops: 10000, data size: 1 0.080 seconds, 0.12 MByte/s for MD5(m.cData) 0.781 seconds, 0.01 MByte/s for o.Hash(@m.cData) # loops: 10000, data size: 10 0.080 seconds, 1.19 MByte/s for MD5(m.cData) 0.772 seconds, 0.12 MByte/s for o.Hash(@m.cData) # loops: 10000, data size: 100 0.090 seconds, 10.60 MByte/s for MD5(m.cData) 0.811 seconds, 1.18 MByte/s for o.Hash(@m.cData) # loops: 10000, data size: 1000 0.130 seconds, 73.36 MByte/s for MD5(m.cData) 0.821 seconds, 11.62 MByte/s for o.Hash(@m.cData) # loops: 10000, data size: 10000 0.581 seconds, 164.14 MByte/s for MD5(m.cData) 1.212 seconds, 78.69 MByte/s for o.Hash(@m.cData) # loops: 10000, data size: 100000 5.338 seconds, 178.66 MByte/s for MD5(m.cData) 8.091 seconds, 117.87 MByte/s for o.Hash(@m.cData) << 11/25/03 01:45:05 AM PROCEDURE SERIES_ D:\DEV\SUB\ZRBJ\TEST\BENCH_CRYPTOAPI_MD5_VS_MD5.FXPThe numbers for newer Foxen are similar, though slightly slower. It is clear to see that the call overhead dominates for small strings (up to 1000 chars) and later the processing time of the MD5 code begins to show. For comparison: on this machine my MD5 code runs at about 275 MBytes/s, so the overhead of copying the data string (or flattening, or whatever) shows even for data size 100000.