Artifact
6b921a56008cdc7e033dbc907456f2b976fad742 :
File
modules/blowfish/blowfish.bench
— part of check-in
[f3b5328d33]
at
2005-10-18 23:02:22
on branch trunk
—
Extended with benchmarks for the keyschedules.
(user:
andreas_kupries
size: 1738)
0000: 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0a 23 20 # -*- tcl -*-.#
0010: 54 63 6c 20 42 65 6e 63 68 6d 61 72 6b 20 46 69 Tcl Benchmark Fi
0020: 6c 65 0a 23 0a 23 20 54 68 69 73 20 66 69 6c 65 le.#.# This file
0030: 20 63 6f 6e 74 61 69 6e 73 20 61 20 6e 75 6d 62 contains a numb
0040: 65 72 20 6f 66 20 62 65 6e 63 68 6d 61 72 6b 73 er of benchmarks
0050: 20 66 6f 72 20 74 68 65 20 27 62 6c 6f 77 66 69 for the 'blowfi
0060: 73 68 27 20 6d 6f 64 75 6c 65 2e 0a 23 20 54 68 sh' module..# Th
0070: 69 73 20 61 6c 6c 6f 77 20 64 65 76 65 6c 6f 70 is allow develop
0080: 65 72 73 20 74 6f 20 6d 6f 6e 69 74 6f 72 2f 67 ers to monitor/g
0090: 61 75 67 65 2f 74 72 61 63 6b 20 70 61 63 6b 61 auge/track packa
00a0: 67 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 0a ge performance..
00b0: 23 0a 23 20 28 63 29 20 32 30 30 35 20 41 6e 64 #.# (c) 2005 And
00c0: 72 65 61 73 20 4b 75 70 72 69 65 73 20 3c 61 6e reas Kupries <an
00d0: 64 72 65 61 73 5f 6b 75 70 72 69 65 73 40 75 73 dreas_kupries@us
00e0: 65 72 73 2e 73 6f 75 72 63 65 66 6f 72 67 65 2e ers.sourceforge.
00f0: 6e 65 74 3e 0a 0a 23 20 57 65 20 6e 65 65 64 20 net>..# We need
0100: 61 74 20 6c 65 61 73 74 20 76 65 72 73 69 6f 6e at least version
0110: 20 38 2e 32 20 66 6f 72 20 74 68 65 20 70 61 63 8.2 for the pac
0120: 6b 61 67 65 20 61 6e 64 20 74 68 75 73 20 74 68 kage and thus th
0130: 65 0a 23 20 62 65 6e 63 68 6d 61 72 6b 73 2e 0a e.# benchmarks..
0140: 0a 69 66 20 7b 21 5b 70 61 63 6b 61 67 65 20 76 .if {![package v
0150: 73 61 74 69 73 66 69 65 73 20 5b 70 61 63 6b 61 satisfies [packa
0160: 67 65 20 70 72 6f 76 69 64 65 20 54 63 6c 5d 20 ge provide Tcl]
0170: 38 2e 32 5d 7d 20 7b 0a 20 20 20 20 72 65 74 75 8.2]} {. retu
0180: 72 6e 0a 7d 0a 0a 23 20 23 23 23 20 23 23 23 20 rn.}..# ### ###
0190: 23 23 23 20 23 23 23 23 23 23 23 23 23 20 23 23 ### ######### ##
01a0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
01b0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 # ##############
01c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 #############.##
01d0: 20 53 65 74 74 69 6e 67 20 75 70 20 74 68 65 20 Setting up the
01e0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 2e 2e 2e 0a environment ....
01f0: 0a 70 61 63 6b 61 67 65 20 66 6f 72 67 65 74 20 .package forget
0200: 62 6c 6f 77 66 69 73 68 0a 63 61 74 63 68 20 7b blowfish.catch {
0210: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
0220: 20 3a 3a 62 6c 6f 77 66 69 73 68 7d 0a 73 6f 75 ::blowfish}.sou
0230: 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b rce [file join [
0240: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e file dirname [in
0250: 66 6f 20 73 63 72 69 70 74 5d 5d 20 62 6c 6f 77 fo script]] blow
0260: 66 69 73 68 2e 74 63 6c 5d 0a 0a 73 65 74 20 69 fish.tcl]..set i
0270: 20 5b 62 69 6e 61 72 79 20 66 6f 72 6d 61 74 20 [binary format
0280: 48 2a 20 30 30 30 30 30 30 30 30 30 30 30 30 30 H* 0000000000000
0290: 30 30 5d 0a 73 65 74 20 70 20 5b 62 69 6e 61 72 00].set p [binar
02a0: 79 20 66 6f 72 6d 61 74 20 48 2a 20 30 30 31 31 y format H* 0011
02b0: 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 2233445566778899
02c0: 61 61 62 62 63 63 64 64 65 65 66 66 5d 0a 0a 73 aabbccddeeff]..s
02d0: 65 74 20 6b 20 5b 62 69 6e 61 72 79 20 66 6f 72 et k [binary for
02e0: 6d 61 74 20 48 2a 20 30 30 30 31 30 32 30 33 30 mat H* 000102030
02f0: 34 30 35 30 36 30 5d 0a 73 65 74 20 63 20 5b 62 405060].set c [b
0300: 69 6e 61 72 79 20 66 6f 72 6d 61 74 20 48 2a 20 inary format H*
0310: 36 39 63 34 65 30 64 38 36 61 37 62 30 34 33 30 69c4e0d86a7b0430
0320: 64 38 63 64 62 37 38 30 37 30 62 34 63 35 35 61 d8cdb78070b4c55a
0330: 5d 0a 0a 23 20 23 23 23 20 23 23 23 20 23 23 23 ]..# ### ### ###
0340: 20 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 ######### #####
0350: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 20 23 #### ######### #
0360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0370: 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 42 65 ##########.## Be
0380: 6e 63 68 6d 61 72 6b 73 2e 0a 0a 62 65 6e 63 68 nchmarks...bench
0390: 20 2d 64 65 73 63 20 22 42 4c 4f 57 46 49 53 48 -desc "BLOWFISH
03a0: 20 45 43 42 20 65 6e 63 72 79 70 74 69 6f 6e 22 ECB encryption"
03b0: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 62 6c 6f -body {. blo
03c0: 77 66 69 73 68 3a 3a 62 6c 6f 77 66 69 73 68 20 wfish::blowfish
03d0: 2d 6d 6f 64 65 20 65 63 62 20 2d 64 69 72 20 65 -mode ecb -dir e
03e0: 6e 63 20 2d 6b 65 79 20 24 6b 20 2d 69 76 20 24 nc -key $k -iv $
03f0: 69 20 24 70 0a 7d 0a 0a 62 65 6e 63 68 20 2d 64 i $p.}..bench -d
0400: 65 73 63 20 22 42 4c 4f 57 46 49 53 48 20 45 43 esc "BLOWFISH EC
0410: 42 20 64 65 63 72 79 70 74 69 6f 6e 22 20 2d 62 B decryption" -b
0420: 6f 64 79 20 7b 0a 20 20 20 20 62 6c 6f 77 66 69 ody {. blowfi
0430: 73 68 3a 3a 62 6c 6f 77 66 69 73 68 20 2d 6d 6f sh::blowfish -mo
0440: 64 65 20 65 63 62 20 2d 64 69 72 20 64 65 63 20 de ecb -dir dec
0450: 2d 6b 65 79 20 24 6b 20 2d 69 76 20 24 69 20 24 -key $k -iv $i $
0460: 63 0a 7d 0a 0a 62 65 6e 63 68 20 2d 64 65 73 63 c.}..bench -desc
0470: 20 22 42 4c 4f 57 46 49 53 48 20 45 43 42 20 65 "BLOWFISH ECB e
0480: 6e 63 72 79 70 74 69 6f 6e 20 63 6f 72 65 22 20 ncryption core"
0490: 2d 70 72 65 20 7b 0a 20 20 20 20 73 65 74 20 6b -pre {. set k
04a0: 65 79 20 5b 62 6c 6f 77 66 69 73 68 3a 3a 49 6e ey [blowfish::In
04b0: 69 74 20 65 63 62 20 24 6b 20 24 69 5d 0a 7d 20 it ecb $k $i].}
04c0: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 62 6c 6f 77 -body {. blow
04d0: 66 69 73 68 3a 3a 45 6e 63 72 79 70 74 20 24 6b fish::Encrypt $k
04e0: 65 79 20 24 70 0a 7d 20 2d 70 6f 73 74 20 7b 0a ey $p.} -post {.
04f0: 20 20 20 20 62 6c 6f 77 66 69 73 68 3a 3a 46 69 blowfish::Fi
0500: 6e 61 6c 20 24 6b 65 79 0a 7d 0a 0a 62 65 6e 63 nal $key.}..benc
0510: 68 20 2d 64 65 73 63 20 22 42 4c 4f 57 46 49 53 h -desc "BLOWFIS
0520: 48 20 45 43 42 20 64 65 63 72 79 70 74 69 6f 6e H ECB decryption
0530: 20 63 6f 72 65 22 20 2d 70 72 65 20 7b 0a 20 20 core" -pre {.
0540: 20 20 73 65 74 20 6b 65 79 20 5b 62 6c 6f 77 66 set key [blowf
0550: 69 73 68 3a 3a 49 6e 69 74 20 65 63 62 20 24 6b ish::Init ecb $k
0560: 20 24 69 5d 0a 7d 20 2d 62 6f 64 79 20 7b 0a 20 $i].} -body {.
0570: 20 20 20 62 6c 6f 77 66 69 73 68 3a 3a 44 65 63 blowfish::Dec
0580: 72 79 70 74 20 24 6b 65 79 20 24 63 0a 7d 20 2d rypt $key $c.} -
0590: 70 6f 73 74 20 7b 0a 20 20 20 20 62 6c 6f 77 66 post {. blowf
05a0: 69 73 68 3a 3a 46 69 6e 61 6c 20 24 6b 65 79 0a ish::Final $key.
05b0: 7d 0a 0a 62 65 6e 63 68 20 2d 64 65 73 63 20 22 }..bench -desc "
05c0: 42 4c 4f 57 46 49 53 48 20 45 43 42 20 6b 65 79 BLOWFISH ECB key
05d0: 73 63 68 65 64 75 6c 65 22 20 2d 62 6f 64 79 20 schedule" -body
05e0: 7b 0a 20 20 20 20 62 6c 6f 77 66 69 73 68 3a 3a {. blowfish::
05f0: 46 69 6e 61 6c 20 5b 62 6c 6f 77 66 69 73 68 3a Final [blowfish:
0600: 3a 49 6e 69 74 20 65 63 62 20 24 6b 20 24 69 5d :Init ecb $k $i]
0610: 0a 7d 0a 0a 62 65 6e 63 68 20 2d 64 65 73 63 20 .}..bench -desc
0620: 22 42 4c 4f 57 46 49 53 48 20 43 42 43 20 6b 65 "BLOWFISH CBC ke
0630: 79 73 63 68 65 64 75 6c 65 22 20 2d 62 6f 64 79 yschedule" -body
0640: 20 7b 0a 20 20 20 20 62 6c 6f 77 66 69 73 68 3a {. blowfish:
0650: 3a 46 69 6e 61 6c 20 5b 62 6c 6f 77 66 69 73 68 :Final [blowfish
0660: 3a 3a 49 6e 69 74 20 63 62 63 20 24 6b 20 24 69 ::Init cbc $k $i
0670: 5d 0a 7d 0a 0a 0a 23 20 23 23 23 20 23 23 23 20 ].}...# ### ###
0680: 23 23 23 20 23 23 23 23 23 23 23 23 23 20 23 23 ### ######### ##
0690: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
06a0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 # ##############
06b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 #############.##
06c0: 20 43 6f 6d 70 6c 65 74 65 0a Complete.