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