Tcl Source Code

Hex Artifact Content
Login

Artifact 8a69dcc7bd773e9f1f2cdd8bfe0d9a417e3dc941:

Attachment "match-bench.tcl" to ticket [a4a7f2abd3] added by aku 2017-05-02 05:53:39.
0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 74  #!/usr/bin/env t
0010: 63 6c 73 68 0a 23 20 68 74 74 70 73 3a 2f 2f 72  clsh.# https://r
0020: 65 73 65 61 72 63 68 2e 73 77 74 63 68 2e 63 6f  esearch.swtch.co
0030: 6d 2f 67 6c 6f 62 0a 23 0a 23 20 28 28 61 2a 29  m/glob.#.# ((a*)
0040: 5e 6e 29 62 0a 23 20 61 5e 31 30 30 0a 0a 70 75  ^n)b.# a^100..pu
0050: 74 73 20 22 54 63 6c 20 5b 69 6e 66 6f 20 70 61  ts "Tcl [info pa
0060: 74 63 68 6c 65 76 65 6c 5d 22 0a 0a 73 65 74 20  tchlevel]"..set 
0070: 63 61 6e 64 69 64 61 74 65 20 5b 73 74 72 69 6e  candidate [strin
0080: 67 20 72 65 70 65 61 74 20 61 20 31 30 30 5d 0a  g repeat a 100].
0090: 0a 66 6f 72 20 7b 73 65 74 20 6e 20 30 7d 20 7b  .for {set n 0} {
00a0: 24 6e 20 3c 20 37 7d 20 7b 69 6e 63 72 20 6e 7d  $n < 7} {incr n}
00b0: 20 7b 0a 20 20 20 20 73 65 74 20 70 61 74 74 65   {.    set patte
00c0: 72 6e 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61  rn [string repea
00d0: 74 20 61 2a 20 24 6e 5d 62 0a 20 20 20 20 70 75  t a* $n]b.    pu
00e0: 74 73 20 22 5b 66 6f 72 6d 61 74 20 25 32 64 20  ts "[format %2d 
00f0: 24 6e 5d 20 3d 20 5b 74 69 6d 65 20 7b 73 74 72  $n] = [time {str
0100: 69 6e 67 20 6d 61 74 63 68 20 24 70 61 74 74 65  ing match $patte
0110: 72 6e 20 24 63 61 6e 64 69 64 61 74 65 7d 5d 22  rn $candidate}]"
0120: 0a 7d 0a 0a 23 20 52 65 73 75 6c 74 73 0a 23 23  .}..# Results.##
0130: 0a 23 20 54 63 6c 20 38 2e 35 2e 31 34 0a 23 20  .# Tcl 8.5.14.# 
0140: 54 63 6c 20 38 2e 36 2e 31 0a 23 23 0a 23 20 4e  Tcl 8.6.1.##.# N
0150: 20 20 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73 0a     microseconds.
0160: 23 20 2d 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  # -   ----------
0170: 2d 2d 0a 23 20 30 20 3d 20 20 20 20 20 20 20 20  --.# 0 =        
0180: 20 32 30 0a 23 20 31 20 3d 20 20 20 20 20 20 20   20.# 1 =       
0190: 20 20 20 34 0a 23 20 32 20 3d 20 20 20 20 20 20     4.# 2 =      
01a0: 20 20 20 35 31 0a 23 20 33 20 3d 20 20 20 20 20     51.# 3 =     
01b0: 20 31 2c 38 31 34 0a 23 20 34 20 3d 20 20 20 20   1,814.# 4 =    
01c0: 20 31 36 2c 34 31 36 0a 23 20 35 20 3d 20 20 20   16,416.# 5 =   
01d0: 20 32 32 37 2c 31 35 35 20 20 28 30 2e 32 20 73   227,155  (0.2 s
01e0: 65 63 6f 6e 64 73 29 0a 23 20 36 20 3d 20 20 33  econds).# 6 =  3
01f0: 2c 39 30 38 2c 32 37 38 20 20 28 33 2e 39 20 73  ,908,278  (3.9 s
0200: 65 63 6f 6e 64 73 29 0a 23 20 37 20 3d 20 35 36  econds).# 7 = 56
0210: 2c 35 32 31 2c 36 36 36 20 28 35 36 2e 35 20 73  ,521,666 (56.5 s
0220: 65 63 6f 6e 64 73 29 0a 23 0a 23 20 54 45 52 4d  econds).#.# TERM
0230: 69 6e 61 74 65 64 20 28 76 69 61 20 5e 43 29 0a  inated (via ^C).