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,5 +16,12 @@ coverage-html: | ||
| 16 | -$(MAKE) -C tests $(AM_MAKEFLAGS) -k $@ | 16 | -$(MAKE) -C tests $(AM_MAKEFLAGS) -k $@ |
| 17 | endif | 17 | endif |
| 18 | 18 | ||
| 19 | +REGEX_CCLASS=/^[ \t]*\(TR_CLASS\|TR_INTERFACE\)\(([a-zA-Z0-9_]+)/\2/d,definition/ | ||
| 19 | tags: | 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,7 +37,10 @@ int | ||
| 37 | main(int argc, char * argv []) | 37 | main(int argc, char * argv []) |
| 38 | { | 38 | { |
| 39 | unsigned char data[16384]; | 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 | size_t got; | 44 | size_t got; |
| 42 | int i; | 45 | int i; |
| 43 | clock_t start, stop; | 46 | clock_t start, stop; |
| @@ -56,16 +59,16 @@ main(int argc, char * argv []) | @@ -56,16 +59,16 @@ main(int argc, char * argv []) | ||
| 56 | 59 | ||
| 57 | SHA1_Init(&ctx); | 60 | SHA1_Init(&ctx); |
| 58 | SHA1_Update(&ctx, data, got); | 61 | SHA1_Update(&ctx, data, got); |
| 59 | - SHA1_Final(digest, &ctx); | 62 | + SHA1_Final(digest.bytes, &ctx); |
| 60 | } | 63 | } |
| 61 | stop = clock(); | 64 | stop = clock(); |
| 62 | printf( | 65 | printf( |
| 63 | "done\nResult: %08x%08x%08x%08x%08x\n", | 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 | printf("CPU time OpenSSL: %f\n", | 72 | printf("CPU time OpenSSL: %f\n", |
| 70 | (double)(stop - start) / CLOCKS_PER_SEC); | 73 | (double)(stop - start) / CLOCKS_PER_SEC); |
| 71 | 74 | ||
| @@ -78,16 +81,16 @@ main(int argc, char * argv []) | @@ -78,16 +81,16 @@ main(int argc, char * argv []) | ||
| 78 | 81 | ||
| 79 | TR_SHA1_Init(&ctx); | 82 | TR_SHA1_Init(&ctx); |
| 80 | TR_SHA1_Update(&ctx, data, got); | 83 | TR_SHA1_Update(&ctx, data, got); |
| 81 | - TR_SHA1_Final(digest, &ctx); | 84 | + TR_SHA1_Final(digest.bytes, &ctx); |
| 82 | } | 85 | } |
| 83 | stop = clock(); | 86 | stop = clock(); |
| 84 | printf( | 87 | printf( |
| 85 | "Done\nResult: %08x%08x%08x%08x%08x\n", | 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 | printf("CPU time Ours: %f\n", (double)(stop - start) / CLOCKS_PER_SEC); | 94 | printf("CPU time Ours: %f\n", (double)(stop - start) / CLOCKS_PER_SEC); |
| 92 | 95 | ||
| 93 | return 0; | 96 | return 0; |
Please
register
or
login
to post a comment