Commit 73e6d512fe1547292b5df4405a27e2fe727a253b
1 parent
52ce40ac
Make digest handling more optimizer save by using a union
Showing
2 changed files
with
24 additions
and
14 deletions
... | ... | @@ -16,5 +16,12 @@ coverage-html: |
16 | 16 | -$(MAKE) -C tests $(AM_MAKEFLAGS) -k $@ |
17 | 17 | endif |
18 | 18 | |
19 | +REGEX_CCLASS=/^[ \t]*\(TR_CLASS\|TR_INTERFACE\)\(([a-zA-Z0-9_]+)/\2/d,definition/ | |
19 | 20 | tags: |
20 | - ctags -R -V --langdef=cclass --langmap=cclass:.h --regex-cclass='/^[ \t]*\(TR_CLASS\|TR_INTERFACE\)\(([a-zA-Z0-9_]+)/\2/d,definition/' | |
21 | + @ctags -R -V --langdef=cclass --langmap=cclass:.h \ | |
22 | + --regex-cclass='$(REGEX_CCLASS)' | |
23 | + | |
24 | +loc: | |
25 | + @find src/ include/ -not -path testers -and -name "*.[ch]" \ | |
26 | + -exec sed '/\/\*/,/\*\//d;/\/\//d' {} \; | wc -l | |
27 | + | ... | ... |
... | ... | @@ -37,7 +37,10 @@ int |
37 | 37 | main(int argc, char * argv []) |
38 | 38 | { |
39 | 39 | unsigned char data[16384]; |
40 | - unsigned char digest[20]; | |
40 | + union { | |
41 | + unsigned char bytes[20]; | |
42 | + uint32_t ints[5]; | |
43 | + } digest; | |
41 | 44 | size_t got; |
42 | 45 | int i; |
43 | 46 | clock_t start, stop; |
... | ... | @@ -56,16 +59,16 @@ main(int argc, char * argv []) |
56 | 59 | |
57 | 60 | SHA1_Init(&ctx); |
58 | 61 | SHA1_Update(&ctx, data, got); |
59 | - SHA1_Final(digest, &ctx); | |
62 | + SHA1_Final(digest.bytes, &ctx); | |
60 | 63 | } |
61 | 64 | stop = clock(); |
62 | 65 | printf( |
63 | 66 | "done\nResult: %08x%08x%08x%08x%08x\n", |
64 | - htonl(((uint32_t *)&digest)[0]), | |
65 | - htonl(((uint32_t *)&digest)[1]), | |
66 | - htonl(((uint32_t *)&digest)[2]), | |
67 | - htonl(((uint32_t *)&digest)[3]), | |
68 | - htonl(((uint32_t *)&digest)[4])); | |
67 | + htonl(digest.ints[0]), | |
68 | + htonl(digest.ints[1]), | |
69 | + htonl(digest.ints[2]), | |
70 | + htonl(digest.ints[3]), | |
71 | + htonl(digest.ints[4])); | |
69 | 72 | printf("CPU time OpenSSL: %f\n", |
70 | 73 | (double)(stop - start) / CLOCKS_PER_SEC); |
71 | 74 | |
... | ... | @@ -78,16 +81,16 @@ main(int argc, char * argv []) |
78 | 81 | |
79 | 82 | TR_SHA1_Init(&ctx); |
80 | 83 | TR_SHA1_Update(&ctx, data, got); |
81 | - TR_SHA1_Final(digest, &ctx); | |
84 | + TR_SHA1_Final(digest.bytes, &ctx); | |
82 | 85 | } |
83 | 86 | stop = clock(); |
84 | 87 | printf( |
85 | 88 | "Done\nResult: %08x%08x%08x%08x%08x\n", |
86 | - htonl(((uint32_t *)&digest)[0]), | |
87 | - htonl(((uint32_t *)&digest)[1]), | |
88 | - htonl(((uint32_t *)&digest)[2]), | |
89 | - htonl(((uint32_t *)&digest)[3]), | |
90 | - htonl(((uint32_t *)&digest)[4])); | |
89 | + htonl(digest.ints[0]), | |
90 | + htonl(digest.ints[1]), | |
91 | + htonl(digest.ints[2]), | |
92 | + htonl(digest.ints[3]), | |
93 | + htonl(digest.ints[4])); | |
91 | 94 | printf("CPU time Ours: %f\n", (double)(stop - start) / CLOCKS_PER_SEC); |
92 | 95 | |
93 | 96 | return 0; | ... | ... |
Please
register
or
login
to post a comment