File: tree.bench

package info (click to toggle)
tcllib 1.8-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 13,628 kB
  • ctags: 4,897
  • sloc: tcl: 88,012; sh: 7,856; ansic: 4,174; xml: 1,765; yacc: 753; perl: 84; f90: 84; makefile: 60; python: 33; ruby: 13; php: 11
file content (95 lines) | stat: -rw-r--r-- 2,617 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# -*- tcl -*-
# Tcl Benchmark File
#
# This file contains a number of benchmarks for the 'struct::tree'
# data structure to allow developers to monitor package performance.
#
# (c) 2003 Andreas Kupries <andreas_kupries@users.sourceforge.net>

package require  struct
namespace import struct::*

bench -desc "tree create" -body {set t [tree]} -post {$t destroy}

proc foo {} {proc foo {} {$::t destroy}}
bench -desc "tree destroy 0" -pre {set t [tree]} -body {foo} -iter 1

foreach n {1 10 100 1000} {
    proc foo {} {proc foo {} {$::t destroy}}
    bench -desc "tree destroy $n" -pre {
	set t [tree]
	for {set i 0} {$i < $n} {incr i} {$t insert root 0}
    } -body {foo} -iter 1
}

proc tup {n} {
    set t [tree]
    for {set i $n} {$i < $n} {incr i} {$t insert root end}
    return
}

proc tupchain {n} {
    set t [tree] ; set p root
    for {set i $n} {$i < $n} {incr i} {set p [$t insert $p 0]}
    return
}

foreach it {1 10 100 1000} {
    bench -desc "tree insert root end (x$it)" \
	    -pre {set t [tree]} -post {$t destroy} \
	    -body {$t insert root end} -iter $it

    bench -desc "tree insert root 0 (x$it)" \
	    -pre {set t [tree]} -post {$t destroy} \
	    -body {$t insert root 0} -iter $it

    bench -desc "tree insert root 5 (x$it)" \
	    -pre {tup 10} -post {$t destroy} \
	    -body {$t insert root 5} -iter $it ; # {}

    bench -desc "tree insert root end-5 (x$it)" \
	    -pre {tup 10} -post {$t destroy} \
	    -body {$t insert root end-5} -iter $it ; # {}
}

foreach n {1 10 100 1000} {
    bench -desc "tree children $n" \
	    -pre {tup $n} -post {$t destroy} \
	    -body {$t children root}

    bench -desc "tree numchildren root $n" \
	    -pre {tup $n} -post {$t destroy} \
	    -body {$t numchildren root}

    bench -desc "tree depth root $n" \
	    -pre {tupchain $n} -post {$t destroy} \
	    -body {$t depth root}

    bench -desc "tree isleaf root $n" \
	    -pre {tupchain $n} -post {$t destroy} \
	    -body {$t isleaf root}

    bench -desc "tree isleaf bott $n" \
	    -pre {tupchain $n} -post {$t destroy} \
	    -body {$t isleaf $p}

    bench -desc "tree numchildren bott $n" \
	    -pre {tup $n} -post {$t destroy} \
	    -body {$t numchildren $p}

    bench -desc "tree parent bott $n" \
	    -pre {tup $n} -post {$t destroy} \
	    -body {$t parent $p}

    bench -desc "tree parent root $n" \
	    -pre {tup $n} -post {$t destroy} \
	    -body {$t parent $p}
}

bench -desc "tree exists root" \
	-pre {set t [tree]} -post {$t destroy} \
	-body {$t exists root}

bench -desc "tree exists miss" \
	-pre {set t [tree]} -post {$t destroy} \
	-body {$t exists miss}