Commit 73e6d512fe1547292b5df4405a27e2fe727a253b

Authored by Georg Hopp
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