]> git.cryptolib.org Git - avr-crypto-lib.git/blob - host/performance2wiki.rb
updated Makefile
[avr-crypto-lib.git] / host / performance2wiki.rb
1 #!/usr/bin/ruby
2 # performnce to wiki
3
4 =begin
5     This file is part of the AVR-Crypto-Lib.
6     Copyright (C) 2009  Daniel Otte (daniel.otte@rub.de)
7
8     This program is free software: you can redistribute it and/or modify
9     it under the terms of the GNU General Public License as published by
10     the Free Software Foundation, either version 3 of the License, or
11     (at your option) any later version.
12
13     This program is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU General Public License for more details.
17
18     You should have received a copy of the GNU General Public License
19     along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 =end
21
22 =begin
23  === Twister-256 performance === 
24     type:                     hash
25     hashsize (bits):           256
26     ctxsize (bytes):            80
27     blocksize (bits):          512
28     init (cycles):             425
29     nextBlock (cycles):      36535
30     lastBlock (cycles):       8071
31     ctx2hash (cycles):       19431
32 =end
33
34 def process_hashfunction(fin, name)
35   lb = fin.readline()
36   m = lb.match(/hashsize \(bits\):[\s]*([\d]*)/)
37   if(!m)
38         printf("unexpected string %s\n", lb)
39   end
40   hashsize = m[1].to_i()
41   lb = fin.readline()
42   m = lb.match(/ctxsize \(bytes\):[\s]*([\d]*)/)
43   ctxsize = m[1].to_i()
44   lb = fin.readline()
45   m = lb.match(/blocksize \(bits\):[\s]*([\d]*)/)
46   blocksize = m[1].to_i()
47   lb = fin.readline()
48   m = lb.match(/init \(cycles\):[\s]*([\d]*)/)
49   inittime = m[1].to_i()
50   lb = fin.readline()
51   m = lb.match(/nextBlock \(cycles\):[\s]*([\d]*)/)
52   nextblocktime = m[1].to_i()  
53   lb = fin.readline()
54   m = lb.match(/lastBlock \(cycles\):[\s]*([\d]*)/)
55   lastblocktime = m[1].to_i()
56   lb = fin.readline()
57   m = lb.match(/ctx2hash \(cycles\):[\s]*([\d]*)/)
58   convtime = m[1].to_i()
59   begin
60     lb = fin.readline()
61   end until m = lb.match(/init \(bytes\):[\s]*([\d]*)/)
62   initstack = m[1].to_i()
63   lb = fin.readline()
64   m = lb.match(/nextBlock \(bytes\):[\s]*([\d]*)/)
65   nextblockstack = m[1].to_i()
66   lb = fin.readline()
67   m = lb.match(/lastBlock \(bytes\):[\s]*([\d]*)/)
68   lastblockstack = m[1].to_i()
69   lb = fin.readline()
70   m = lb.match(/ctx2hash \(bytes\):[\s]*([\d]*)/)
71   convstack = m[1].to_i()
72   s1 = (initstack>nextblockstack)?initstack:nextblockstack
73   s2 = (lastblockstack>convstack)?lastblockstack:convstack
74   stack = (s1>s2)?s1:s2
75   
76   printf("| %20s || %3s || %3s || || %4d || %4d || %4d || %4d ||" +
77          " %6d || %6d || %7.2f || %6d || || || \n|-\n" , 
78         name, $lang, $lang ,ctxsize, stack, hashsize, blocksize, 
79             inittime, nextblocktime, nextblocktime.to_f/(blocksize/8),
80                 lastblocktime+convtime)
81 end
82
83
84 $handlers = Hash.new
85 $handlers.default = 0
86 $handlers["hashfunction"] = 1 #process_hashfunction
87
88 def process_file(fname)
89   fin = File.open(fname, "r")
90   $lang = "asm"
91   $lang = "C" if fname.match(/_c.txt$/)
92   begin
93     begin
94           if fin.eof()
95                 return
96           end
97       lb = fin.readline()
98     end while !m=lb.match(/=== (.*) performance ===/)
99     name = m[1];
100     lb = fin.readline()
101     m = lb.match(/type:[\s]*([\w]*)/)
102     type = m[1]
103     if $handlers[type] != 0
104     #  handlers[type](fin, name)
105       process_hashfunction(fin, name)
106     else
107       printf("ERROR: unsupported type: %s !\n", type)
108     end 
109   end while(true)
110   fin.close()
111 end
112
113 for i in (0..ARGV.size-1)
114   process_file(ARGV[i])
115 end
116
117
118
119
120
121
122