SHA-1 prototype » History » Version 6
Greg Burri, 11/18/2009 08:54 PM
1 | 1 | Greg Burri | h1. SHA-1 prototype |
---|---|---|---|
2 | |||
3 | directory : source:/prototypes/01_SHA1 |
||
4 | |||
5 | h2. Goals |
||
6 | |||
7 | * Compute the SHA-1 of each part of a given file. |
||
8 | * Compute the SHA-1 of a stream. |
||
9 | * Find the fastest way to compute SHA1, should be at least 40 MB/s. |
||
10 | |||
11 | 5 | Greg Burri | h2. Speed measures against _sha1sum_ |
12 | 1 | Greg Burri | |
13 | file : @01.wmv@ : 17'639'245 byte ~ 17Mo (buffered) |
||
14 | Each measurement is pre-runned once to put the file in cache. |
||
15 | |||
16 | |||
17 | h3. _sha1sum_ from _GNU coreutils_ (Reference) |
||
18 | |||
19 | speed : 57 MB/s |
||
20 | |||
21 | <pre> |
||
22 | <gburri@overnux:~/code/lang/haskell/SHA1$> time sha1sum < 01.wmv |
||
23 | 3aec84601612e8c604ac01971e0ecd9d536dbead - |
||
24 | |||
25 | real 0m0.301s |
||
26 | user 0m0.276s |
||
27 | sys 0m0.020s |
||
28 | </pre> |
||
29 | |||
30 | 5 | Greg Burri | h3. QCryptographicHash (release -O2) |
31 | 1 | Greg Burri | |
32 | 4 | Greg Burri | speed : 49 MB/s |
33 | 1 | Greg Burri | |
34 | <pre> |
||
35 | 4 | Greg Burri | <flynux:~/code/projects/aybabtu/prototypes/01_SHA1 $> time ./qt_sha1 all 01.wmv |
36 | 3aec84601612e8c604ac01971e0ecd9d536dbead |
||
37 | 2 | Greg Burri | |
38 | 4 | Greg Burri | real 0m0.340s |
39 | 2 | Greg Burri | user 0m0.324s |
40 | 1 | Greg Burri | sys 0m0.016s |
41 | </pre> |
||
42 | 5 | Greg Burri | |
43 | |||
44 | h2. Speed measures against _Linus's sha1_ |
||
45 | |||
46 | file : @test.bin@ : 754'856'284 byte ~ 720Mo (buffered) |
||
47 | Each measurement is pre-runned once to put the file in cache. |
||
48 | |||
49 | |||
50 | h3. _Linus's sha1_ |
||
51 | |||
52 | h2. Debug mode |
||
53 | |||
54 | Speed : 69.3 MB/s |
||
55 | |||
56 | <pre> |
||
57 | $ time ./debug/01_SHA1.exe all ~/data.bin |
||
58 | ca6fa5e8eeb976193f81a01bf67e4bbf3f07357f |
||
59 | |||
60 | real 0m10.383s |
||
61 | user 0m0.015s |
||
62 | sys 0m0.000s |
||
63 | </pre> |
||
64 | |||
65 | h2. Release mode (-02) |
||
66 | |||
67 | 6 | Greg Burri | Speed : 165.1 MB/s |
68 | 5 | Greg Burri | |
69 | <pre> |
||
70 | $ time ./release/01_SHA1.exe all ~/data.bin |
||
71 | ca6fa5e8eeb976193f81a01bf67e4bbf3f07357f |
||
72 | |||
73 | real 0m4.360s |
||
74 | user 0m0.000s |
||
75 | sys 0m0.015s |
||
76 | </pre> |
||
77 | |||
78 | h3. QCryptographicHash |
||
79 | |||
80 | h2. Debug mode |
||
81 | |||
82 | Speed :21 MB/s |
||
83 | |||
84 | <pre> |
||
85 | $ time ./debug/01_SHA1.exe all ~/data.bin |
||
86 | ca6fa5e8eeb976193f81a01bf67e4bbf3f07357f |
||
87 | |||
88 | real 0m34.223s |
||
89 | user 0m0.015s |
||
90 | sys 0m0.000s |
||
91 | </pre> |
||
92 | |||
93 | h2. Release mode (-02) |
||
94 | |||
95 | Speed : 164.4 MB/s |
||
96 | |||
97 | <pre> |
||
98 | $ time ./release/01_SHA1.exe all ~/data.bin.mkv |
||
99 | ca6fa5e8eeb976193f81a01bf67e4bbf3f07357f |
||
100 | |||
101 | real 0m4.380s |
||
102 | user 0m0.000s |
||
103 | sys 0m0.015s |
||
104 | </pre> |
||
105 | 1 | Greg Burri | |
106 | 6 | Greg Burri | h2. Conclusions |
107 | |||
108 | * The Qt implementation is fast and can be used without problem. |
||
109 | * The Qt implementation in debug mode is *very* slow, be careful. |