1# -*- tcl -*- 2# Tcl Benchmark File 3# 4# This file contains a number of benchmarks for the 'textutil::string' 5# module. This allow developers to monitor/gauge/track package 6# performance. 7# 8# (c) 2008 Michael Schlenker <mic42@sourceforge.net> 9 10# We need at least version 8.2 for the package and thus the 11# benchmarks. 12 13if {![package vsatisfies [package provide Tcl] 8.2]} { 14 return 15} 16 17# ### ### ### ######### ######### ######### ########################### 18## Setting up the environment ... 19 20package forget log 21catch {namespace delete ::log} 22source [file join [file dirname [file dirname [info script]]] log log.tcl] 23 24package forget textutil::string 25catch {namespace delete ::textutil} 26source [file join [file dirname [info script]] string.tcl] 27 28# ### ### ### ######### ######### ######### ########################### 29## Benchmarks. 30 31foreach n {1 10 100 1000 5000} { 32bench -desc "longestCommonPrefixList - $n char match - 2 elements list" -pre { 33 set list [list [string repeat a $n]b [string repeat a $n]c] 34} -body { 35 set prefix [::textutil::string::longestCommonPrefixList $list] 36} -post { 37 unset list 38 unset prefix 39} 40} 41 42foreach n {1 10 100 1000 5000} { 43bench -desc "longestCommonPrefixList - 10 char match - $n elements list" -pre { 44 set elem [string repeat a 10] 45 for {set i 0} {$i < $n} {incr i} { 46 lappend list "$elem$i" 47 } 48} -body { 49 set prefix [::textutil::string::longestCommonPrefixList $list] 50} -post { 51 unset list 52 unset prefix 53} 54} 55 56foreach n {1 10 100 1000 5000} { 57bench -desc "longestCommonPrefixList - no match - $n elements list" -pre { 58 set elem [string repeat a 10] 59 for {set i 0} {$i < $n} {incr i} { 60 lappend list "$elem$i" 61 } 62 lappend list "NOPREFIX" 63} -body { 64 set prefix [::textutil::string::longestCommonPrefixList $list] 65} -post { 66 unset list 67 unset prefix 68} 69} 70 71foreach n {1 10 100 1000 5000} { 72bench -desc "chop one char from $n char string" -pre { 73 set str [string repeat a $n] 74} -body { 75 set chopped [::textutil::string::chop $str] 76} -post { 77 unset str 78 unset chopped 79} 80} 81 82foreach n {1 10 100 1000 5000} { 83bench -desc "tail one char from $n char string" -pre { 84 set str [string repeat a $n] 85} -body { 86 set tailed [::textutil::string::tail $str] 87} -post { 88 unset str 89 unset tailed 90} 91} 92 93foreach n {1 10 100 1000 5000} { 94bench -desc "cap from $n char string" -pre { 95 set str [string repeat a $n] 96} -body { 97 set capped [::textutil::string::cap $str] 98} -post { 99 unset str 100 unset capped 101} 102} 103 104foreach n {1 10 100 1000 5000} { 105bench -desc "uncap from $n char string" -pre { 106 set str [string repeat a $n] 107} -body { 108 set uncapped [::textutil::string::uncap $str] 109} -post { 110 unset str 111 unset uncapped 112} 113} 114 115# ### ### ### ######### ######### ######### ########################### 116## Complete 117