MessageTally.st
author claus
Fri, 05 Aug 1994 03:07:58 +0200
changeset 10 676ce0471de4
parent 9 f5b6ab00bdf6
child 17 86bd3a9f6ef0
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
470788421600 Initial revision
claus
parents:
diff changeset
     1
"
5
75e76fc5457e *** empty log message ***
claus
parents: 4
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
0
470788421600 Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
470788421600 Initial revision
claus
parents:
diff changeset
     4
470788421600 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
470788421600 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
470788421600 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
470788421600 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
470788421600 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
470788421600 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
470788421600 Initial revision
claus
parents:
diff changeset
    11
"
470788421600 Initial revision
claus
parents:
diff changeset
    12
470788421600 Initial revision
claus
parents:
diff changeset
    13
Object subclass:#MessageTally
470788421600 Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'classes selectors counts ntally
470788421600 Initial revision
claus
parents:
diff changeset
    15
                              sumClasses sumSelectors sumCounts sumNtally'
470788421600 Initial revision
claus
parents:
diff changeset
    16
       classVariableNames:''
470788421600 Initial revision
claus
parents:
diff changeset
    17
       poolDictionaries:''
470788421600 Initial revision
claus
parents:
diff changeset
    18
       category:'System-Support'
470788421600 Initial revision
claus
parents:
diff changeset
    19
!
470788421600 Initial revision
claus
parents:
diff changeset
    20
470788421600 Initial revision
claus
parents:
diff changeset
    21
MessageTally comment:'
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    22
COPYRIGHT (c) 1989 by Claus Gittinger
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    23
              All Rights Reserved
10
676ce0471de4 *** empty log message ***
claus
parents: 9
diff changeset
    24
676ce0471de4 *** empty log message ***
claus
parents: 9
diff changeset
    25
$Header: /cvs/stx/stx/libbasic3/MessageTally.st,v 1.6 1994-08-05 01:07:01 claus Exp $
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    26
'!
0
470788421600 Initial revision
claus
parents:
diff changeset
    27
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    28
!MessageTally class methodsFor:'documentation'!
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    29
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    30
copyright
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    31
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    32
 COPYRIGHT (c) 1989 by Claus Gittinger
0
470788421600 Initial revision
claus
parents:
diff changeset
    33
              All Rights Reserved
470788421600 Initial revision
claus
parents:
diff changeset
    34
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    35
 This software is furnished under a license and may be used
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    36
 only in accordance with the terms of that license and with the
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    37
 inclusion of the above copyright notice.   This software may not
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    38
 be provided or otherwise made available to, or used by, any
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    39
 other person.  No title to or ownership of the software is
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    40
 hereby transferred.
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    41
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    42
!
0
470788421600 Initial revision
claus
parents:
diff changeset
    43
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    44
version
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    45
"
10
676ce0471de4 *** empty log message ***
claus
parents: 9
diff changeset
    46
$Header: /cvs/stx/stx/libbasic3/MessageTally.st,v 1.6 1994-08-05 01:07:01 claus Exp $
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    47
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    48
!
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    49
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    50
documentation
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    51
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    52
    MessageTally allows profiling excution of a block; 
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    53
    statistic of method evaluation is output on Transcript.
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    54
    To get statistic, use 'MessageTally spyOn:aBlock'.
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    55
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    56
    example:
10
676ce0471de4 *** empty log message ***
claus
parents: 9
diff changeset
    57
        MessageTally spyOn:[
676ce0471de4 *** empty log message ***
claus
parents: 9
diff changeset
    58
            (ByteArray uninitalizedNew:1000) sort
676ce0471de4 *** empty log message ***
claus
parents: 9
diff changeset
    59
        ]
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    60
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    61
! !
0
470788421600 Initial revision
claus
parents:
diff changeset
    62
470788421600 Initial revision
claus
parents:
diff changeset
    63
!MessageTally class methodsFor:'instance creation'!
470788421600 Initial revision
claus
parents:
diff changeset
    64
470788421600 Initial revision
claus
parents:
diff changeset
    65
spyOn:aBlock
470788421600 Initial revision
claus
parents:
diff changeset
    66
    "evaluate aBlock and output time statistic on Transcript"
470788421600 Initial revision
claus
parents:
diff changeset
    67
470788421600 Initial revision
claus
parents:
diff changeset
    68
    |runTime aTally|
470788421600 Initial revision
claus
parents:
diff changeset
    69
470788421600 Initial revision
claus
parents:
diff changeset
    70
    aTally := self new.
470788421600 Initial revision
claus
parents:
diff changeset
    71
    runTime := aTally spyOn:aBlock.
470788421600 Initial revision
claus
parents:
diff changeset
    72
    aTally statistics.
470788421600 Initial revision
claus
parents:
diff changeset
    73
    Transcript cr.
470788421600 Initial revision
claus
parents:
diff changeset
    74
    Transcript showCr:('total execution time: '
470788421600 Initial revision
claus
parents:
diff changeset
    75
                       , runTime printString , ' ms')
470788421600 Initial revision
claus
parents:
diff changeset
    76
470788421600 Initial revision
claus
parents:
diff changeset
    77
    "MessageTally spyOn:[10000 timesRepeat:[#(6 5 4 3 2 1) sort] ]"
470788421600 Initial revision
claus
parents:
diff changeset
    78
!
470788421600 Initial revision
claus
parents:
diff changeset
    79
470788421600 Initial revision
claus
parents:
diff changeset
    80
spyCountOn:aBlock
470788421600 Initial revision
claus
parents:
diff changeset
    81
    "evaluate aBlock and output call statistic on Transcript"
470788421600 Initial revision
claus
parents:
diff changeset
    82
470788421600 Initial revision
claus
parents:
diff changeset
    83
    (self new spyCountOn:aBlock) statistics
470788421600 Initial revision
claus
parents:
diff changeset
    84
470788421600 Initial revision
claus
parents:
diff changeset
    85
    "MessageTally spyCountOn:[#(6 5 4 3 2 1) sort ]"
470788421600 Initial revision
claus
parents:
diff changeset
    86
! !
470788421600 Initial revision
claus
parents:
diff changeset
    87
470788421600 Initial revision
claus
parents:
diff changeset
    88
!MessageTally methodsFor:'private'!
470788421600 Initial revision
claus
parents:
diff changeset
    89
470788421600 Initial revision
claus
parents:
diff changeset
    90
setupArrays
470788421600 Initial revision
claus
parents:
diff changeset
    91
    classes := Array new:200.
470788421600 Initial revision
claus
parents:
diff changeset
    92
    selectors := Array new:200.
470788421600 Initial revision
claus
parents:
diff changeset
    93
    counts := Array new:200.
470788421600 Initial revision
claus
parents:
diff changeset
    94
    sumClasses := Array new:200.
470788421600 Initial revision
claus
parents:
diff changeset
    95
    sumSelectors := Array new:200.
470788421600 Initial revision
claus
parents:
diff changeset
    96
    sumCounts := Array new:200.
470788421600 Initial revision
claus
parents:
diff changeset
    97
    ntally := 0.
470788421600 Initial revision
claus
parents:
diff changeset
    98
    sumNtally := 0
470788421600 Initial revision
claus
parents:
diff changeset
    99
!
470788421600 Initial revision
claus
parents:
diff changeset
   100
470788421600 Initial revision
claus
parents:
diff changeset
   101
spyOn:aBlock
470788421600 Initial revision
claus
parents:
diff changeset
   102
    "spy on execution time"
470788421600 Initial revision
claus
parents:
diff changeset
   103
470788421600 Initial revision
claus
parents:
diff changeset
   104
    |startTime endTime|
470788421600 Initial revision
claus
parents:
diff changeset
   105
470788421600 Initial revision
claus
parents:
diff changeset
   106
    self setupArrays.
2
claus
parents: 0
diff changeset
   107
    ObjectMemory spyInterruptHandler:self.
10
676ce0471de4 *** empty log message ***
claus
parents: 9
diff changeset
   108
    startTime := Time millisecondClockValue.
0
470788421600 Initial revision
claus
parents:
diff changeset
   109
    OperatingSystem startSpyTimer.
470788421600 Initial revision
claus
parents:
diff changeset
   110
    aBlock value.
470788421600 Initial revision
claus
parents:
diff changeset
   111
    OperatingSystem stopSpyTimer.
10
676ce0471de4 *** empty log message ***
claus
parents: 9
diff changeset
   112
    endTime := Time millisecondClockValue.
2
claus
parents: 0
diff changeset
   113
    ObjectMemory spyInterruptHandler:nil.
0
470788421600 Initial revision
claus
parents:
diff changeset
   114
    ^ endTime - startTime
470788421600 Initial revision
claus
parents:
diff changeset
   115
!
470788421600 Initial revision
claus
parents:
diff changeset
   116
470788421600 Initial revision
claus
parents:
diff changeset
   117
spyCountOn:aBlock
470788421600 Initial revision
claus
parents:
diff changeset
   118
    "spy on method sends"
470788421600 Initial revision
claus
parents:
diff changeset
   119
470788421600 Initial revision
claus
parents:
diff changeset
   120
    self setupArrays.
2
claus
parents: 0
diff changeset
   121
    ObjectMemory stepInterruptHandler:nil.
0
470788421600 Initial revision
claus
parents:
diff changeset
   122
    StepInterruptPending := true.
470788421600 Initial revision
claus
parents:
diff changeset
   123
    InterruptPending := true.
470788421600 Initial revision
claus
parents:
diff changeset
   124
    aBlock value.
470788421600 Initial revision
claus
parents:
diff changeset
   125
    StepInterruptPending := nil.
2
claus
parents: 0
diff changeset
   126
    ObjectMemory stepInterruptHandler:nil.
0
470788421600 Initial revision
claus
parents:
diff changeset
   127
!
470788421600 Initial revision
claus
parents:
diff changeset
   128
470788421600 Initial revision
claus
parents:
diff changeset
   129
stepInterrupt
470788421600 Initial revision
claus
parents:
diff changeset
   130
    "called for every send;
470788421600 Initial revision
claus
parents:
diff changeset
   131
     increment counts and retrigger stepInterrupt"
470788421600 Initial revision
claus
parents:
diff changeset
   132
470788421600 Initial revision
claus
parents:
diff changeset
   133
    self count.
470788421600 Initial revision
claus
parents:
diff changeset
   134
    StepInterruptPending := true.
470788421600 Initial revision
claus
parents:
diff changeset
   135
    InterruptPending := true
470788421600 Initial revision
claus
parents:
diff changeset
   136
!
470788421600 Initial revision
claus
parents:
diff changeset
   137
470788421600 Initial revision
claus
parents:
diff changeset
   138
spyInterrupt
470788421600 Initial revision
claus
parents:
diff changeset
   139
    "called every 10ms by timer;
470788421600 Initial revision
claus
parents:
diff changeset
   140
     increment counts and retrigger spyInterrupt"
470788421600 Initial revision
claus
parents:
diff changeset
   141
470788421600 Initial revision
claus
parents:
diff changeset
   142
    self count.
470788421600 Initial revision
claus
parents:
diff changeset
   143
    OperatingSystem startSpyTimer
470788421600 Initial revision
claus
parents:
diff changeset
   144
!
470788421600 Initial revision
claus
parents:
diff changeset
   145
470788421600 Initial revision
claus
parents:
diff changeset
   146
count
470788421600 Initial revision
claus
parents:
diff changeset
   147
    "increment class/method counts"
470788421600 Initial revision
claus
parents:
diff changeset
   148
470788421600 Initial revision
claus
parents:
diff changeset
   149
    |where index sel recClass done newColl|
470788421600 Initial revision
claus
parents:
diff changeset
   150
470788421600 Initial revision
claus
parents:
diff changeset
   151
    where := thisContext.
470788421600 Initial revision
claus
parents:
diff changeset
   152
    "where is now my context"
470788421600 Initial revision
claus
parents:
diff changeset
   153
    where := where sender.
470788421600 Initial revision
claus
parents:
diff changeset
   154
    "where is now spy/step interrupt context"
470788421600 Initial revision
claus
parents:
diff changeset
   155
    where := where sender.
470788421600 Initial revision
claus
parents:
diff changeset
   156
    "where is now interrupted context"
470788421600 Initial revision
claus
parents:
diff changeset
   157
470788421600 Initial revision
claus
parents:
diff changeset
   158
    "ignore block-contexts"
470788421600 Initial revision
claus
parents:
diff changeset
   159
    (where isBlockContext) ifTrue:[
470788421600 Initial revision
claus
parents:
diff changeset
   160
        where := nil.   "currently needed"
470788421600 Initial revision
claus
parents:
diff changeset
   161
        ^ self
470788421600 Initial revision
claus
parents:
diff changeset
   162
    ].
470788421600 Initial revision
claus
parents:
diff changeset
   163
470788421600 Initial revision
claus
parents:
diff changeset
   164
    sel := where selector.
470788421600 Initial revision
claus
parents:
diff changeset
   165
    recClass := where searchClass whichClassImplements:sel "receiver class".
470788421600 Initial revision
claus
parents:
diff changeset
   166
470788421600 Initial revision
claus
parents:
diff changeset
   167
    index := 0.
470788421600 Initial revision
claus
parents:
diff changeset
   168
    done := false.
470788421600 Initial revision
claus
parents:
diff changeset
   169
    [done] whileFalse:[
470788421600 Initial revision
claus
parents:
diff changeset
   170
        index := selectors identityIndexOf:sel startingAt:(index + 1).
470788421600 Initial revision
claus
parents:
diff changeset
   171
        (index == 0) ifTrue:[
470788421600 Initial revision
claus
parents:
diff changeset
   172
            ntally := ntally + 1.
470788421600 Initial revision
claus
parents:
diff changeset
   173
            (ntally > counts size) ifTrue:[
2
claus
parents: 0
diff changeset
   174
                newColl := Array new:(ntally * 2).
claus
parents: 0
diff changeset
   175
                newColl replaceFrom:1 with:counts.
claus
parents: 0
diff changeset
   176
                counts := newColl.
claus
parents: 0
diff changeset
   177
                newColl := Array new:(ntally * 2).
claus
parents: 0
diff changeset
   178
                newColl replaceFrom:1 with:selectors.
claus
parents: 0
diff changeset
   179
                selectors := newColl.
claus
parents: 0
diff changeset
   180
                newColl := Array new:(ntally * 2).
claus
parents: 0
diff changeset
   181
                newColl replaceFrom:1 with:classes.
claus
parents: 0
diff changeset
   182
                classes := newColl.
0
470788421600 Initial revision
claus
parents:
diff changeset
   183
            ].
470788421600 Initial revision
claus
parents:
diff changeset
   184
            selectors at:ntally put:sel.
470788421600 Initial revision
claus
parents:
diff changeset
   185
            classes at:ntally put:recClass.
470788421600 Initial revision
claus
parents:
diff changeset
   186
            counts at:ntally put:1.
470788421600 Initial revision
claus
parents:
diff changeset
   187
            done := true
470788421600 Initial revision
claus
parents:
diff changeset
   188
        ] ifFalse:[
470788421600 Initial revision
claus
parents:
diff changeset
   189
            ((classes at:index) == recClass) ifTrue:[
470788421600 Initial revision
claus
parents:
diff changeset
   190
                counts at:index put:((counts at:index) + 1).
470788421600 Initial revision
claus
parents:
diff changeset
   191
                done := true
470788421600 Initial revision
claus
parents:
diff changeset
   192
            ]
470788421600 Initial revision
claus
parents:
diff changeset
   193
        ]
470788421600 Initial revision
claus
parents:
diff changeset
   194
    ].
470788421600 Initial revision
claus
parents:
diff changeset
   195
470788421600 Initial revision
claus
parents:
diff changeset
   196
    "count in accumulated table"
470788421600 Initial revision
claus
parents:
diff changeset
   197
    [where notNil] whileTrue:[
470788421600 Initial revision
claus
parents:
diff changeset
   198
        sel := where selector.
470788421600 Initial revision
claus
parents:
diff changeset
   199
        (sel == #spyOn:) ifTrue:[
470788421600 Initial revision
claus
parents:
diff changeset
   200
            where := nil
470788421600 Initial revision
claus
parents:
diff changeset
   201
        ] ifFalse:[
470788421600 Initial revision
claus
parents:
diff changeset
   202
            recClass := where searchClass whichClassImplements:sel "receiver class".
470788421600 Initial revision
claus
parents:
diff changeset
   203
            recClass isNil ifTrue:[
470788421600 Initial revision
claus
parents:
diff changeset
   204
                recClass := where searchClass
470788421600 Initial revision
claus
parents:
diff changeset
   205
            ].
470788421600 Initial revision
claus
parents:
diff changeset
   206
            index := 0.
470788421600 Initial revision
claus
parents:
diff changeset
   207
            done := false.
470788421600 Initial revision
claus
parents:
diff changeset
   208
            [done] whileFalse:[
470788421600 Initial revision
claus
parents:
diff changeset
   209
                index := sumSelectors identityIndexOf:sel startingAt:(index + 1).
470788421600 Initial revision
claus
parents:
diff changeset
   210
                (index == 0) ifTrue:[
470788421600 Initial revision
claus
parents:
diff changeset
   211
                    sumNtally := sumNtally + 1.
470788421600 Initial revision
claus
parents:
diff changeset
   212
                    (sumNtally > sumCounts size) ifTrue:[
2
claus
parents: 0
diff changeset
   213
                        newColl := Array new:(sumNtally * 2).
claus
parents: 0
diff changeset
   214
                        newColl replaceFrom:1 with:sumCounts.
claus
parents: 0
diff changeset
   215
                        sumCounts := newColl.
0
470788421600 Initial revision
claus
parents:
diff changeset
   216
2
claus
parents: 0
diff changeset
   217
                        newColl := Array new:(sumNtally * 2).
claus
parents: 0
diff changeset
   218
                        newColl replaceFrom:1 with:sumSelectors.
claus
parents: 0
diff changeset
   219
                        sumSelectors := newColl.
0
470788421600 Initial revision
claus
parents:
diff changeset
   220
2
claus
parents: 0
diff changeset
   221
                        newColl := Array new:(sumNtally * 2).
claus
parents: 0
diff changeset
   222
                        newColl replaceFrom:1 with:sumClasses.
claus
parents: 0
diff changeset
   223
                        sumClasses := newColl.
0
470788421600 Initial revision
claus
parents:
diff changeset
   224
                    ].
470788421600 Initial revision
claus
parents:
diff changeset
   225
                    sumSelectors at:sumNtally put:sel.
470788421600 Initial revision
claus
parents:
diff changeset
   226
                    sumClasses at:sumNtally put:recClass.
470788421600 Initial revision
claus
parents:
diff changeset
   227
                    sumCounts at:sumNtally put:1.
470788421600 Initial revision
claus
parents:
diff changeset
   228
                    done := true
470788421600 Initial revision
claus
parents:
diff changeset
   229
                ] ifFalse:[
470788421600 Initial revision
claus
parents:
diff changeset
   230
                    ((sumClasses at:index) == recClass) ifTrue:[
470788421600 Initial revision
claus
parents:
diff changeset
   231
                        sumCounts at:index put:((sumCounts at:index) + 1).
470788421600 Initial revision
claus
parents:
diff changeset
   232
                        done := true
470788421600 Initial revision
claus
parents:
diff changeset
   233
                    ]
470788421600 Initial revision
claus
parents:
diff changeset
   234
                ]
470788421600 Initial revision
claus
parents:
diff changeset
   235
            ].
470788421600 Initial revision
claus
parents:
diff changeset
   236
            where := where sender
470788421600 Initial revision
claus
parents:
diff changeset
   237
        ]
470788421600 Initial revision
claus
parents:
diff changeset
   238
    ]
470788421600 Initial revision
claus
parents:
diff changeset
   239
!
470788421600 Initial revision
claus
parents:
diff changeset
   240
470788421600 Initial revision
claus
parents:
diff changeset
   241
statistics
470788421600 Initial revision
claus
parents:
diff changeset
   242
    "print statistics with percentages"
470788421600 Initial revision
claus
parents:
diff changeset
   243
470788421600 Initial revision
claus
parents:
diff changeset
   244
    |nprobe sumNprobe nthis percent|
470788421600 Initial revision
claus
parents:
diff changeset
   245
470788421600 Initial revision
claus
parents:
diff changeset
   246
    nprobe := 0.
470788421600 Initial revision
claus
parents:
diff changeset
   247
    1 to:ntally do:[:index |
470788421600 Initial revision
claus
parents:
diff changeset
   248
        nprobe := nprobe + (counts at:index)
470788421600 Initial revision
claus
parents:
diff changeset
   249
    ].
470788421600 Initial revision
claus
parents:
diff changeset
   250
    sumNprobe := 0.
470788421600 Initial revision
claus
parents:
diff changeset
   251
    1 to:sumNtally do:[:index |
470788421600 Initial revision
claus
parents:
diff changeset
   252
        sumNprobe := sumNprobe + (sumCounts at:index)
470788421600 Initial revision
claus
parents:
diff changeset
   253
    ].
470788421600 Initial revision
claus
parents:
diff changeset
   254
    Transcript cr.
470788421600 Initial revision
claus
parents:
diff changeset
   255
    Transcript show:'total probes: '.
470788421600 Initial revision
claus
parents:
diff changeset
   256
    Transcript show:nprobe printString.
470788421600 Initial revision
claus
parents:
diff changeset
   257
    Transcript show:' ('.
470788421600 Initial revision
claus
parents:
diff changeset
   258
    Transcript show:sumNprobe printString.
470788421600 Initial revision
claus
parents:
diff changeset
   259
    Transcript show:')'.
470788421600 Initial revision
claus
parents:
diff changeset
   260
    Transcript cr.
470788421600 Initial revision
claus
parents:
diff changeset
   261
    Transcript cr.
470788421600 Initial revision
claus
parents:
diff changeset
   262
    Transcript show:'  ntally'.
470788421600 Initial revision
claus
parents:
diff changeset
   263
    Transcript tab show:'percentage'.
470788421600 Initial revision
claus
parents:
diff changeset
   264
    Transcript tab show:'        class'.     
470788421600 Initial revision
claus
parents:
diff changeset
   265
    Transcript tab showCr:'       selector'.
470788421600 Initial revision
claus
parents:
diff changeset
   266
    Transcript showCr:'------------------ leafs ---------------------------'.
470788421600 Initial revision
claus
parents:
diff changeset
   267
    1 to:ntally do:[:index |
470788421600 Initial revision
claus
parents:
diff changeset
   268
        nthis := counts at:index.
470788421600 Initial revision
claus
parents:
diff changeset
   269
        percent := nthis * 100 // nprobe.
2
claus
parents: 0
diff changeset
   270
        Transcript show:(nthis printStringLeftPaddedTo:6).
0
470788421600 Initial revision
claus
parents:
diff changeset
   271
        Transcript tab. Transcript show:'    '.
2
claus
parents: 0
diff changeset
   272
        Transcript show:((percent printStringLeftPaddedTo:3) , '%').
0
470788421600 Initial revision
claus
parents:
diff changeset
   273
        Transcript tab. 
2
claus
parents: 0
diff changeset
   274
        Transcript show:((classes at:index) name printStringLeftPaddedTo:20).
0
470788421600 Initial revision
claus
parents:
diff changeset
   275
        Transcript tab. Transcript show:'    '.
470788421600 Initial revision
claus
parents:
diff changeset
   276
        Transcript showCr:((selectors at:index) printString)
470788421600 Initial revision
claus
parents:
diff changeset
   277
    ].
470788421600 Initial revision
claus
parents:
diff changeset
   278
470788421600 Initial revision
claus
parents:
diff changeset
   279
    Transcript showCr:'---------------- accumulated -----------------------'.
470788421600 Initial revision
claus
parents:
diff changeset
   280
    1 to:sumNtally do:[:index |
470788421600 Initial revision
claus
parents:
diff changeset
   281
        nthis := sumCounts at:index.
470788421600 Initial revision
claus
parents:
diff changeset
   282
        percent := nthis * 100 // sumNprobe.
2
claus
parents: 0
diff changeset
   283
        Transcript show:(nthis printStringLeftPaddedTo:6).
0
470788421600 Initial revision
claus
parents:
diff changeset
   284
        Transcript tab. Transcript show:'    '.
2
claus
parents: 0
diff changeset
   285
        Transcript show:((percent printStringLeftPaddedTo:3) , '%').
0
470788421600 Initial revision
claus
parents:
diff changeset
   286
        Transcript tab. 
470788421600 Initial revision
claus
parents:
diff changeset
   287
        (sumClasses at:index) isNil ifTrue:[
2
claus
parents: 0
diff changeset
   288
            Transcript show:('??' printStringLeftPaddedTo:20)
0
470788421600 Initial revision
claus
parents:
diff changeset
   289
        ] ifFalse:[
2
claus
parents: 0
diff changeset
   290
            Transcript show:((sumClasses at:index) name printStringLeftPaddedTo:20).
0
470788421600 Initial revision
claus
parents:
diff changeset
   291
        ].
470788421600 Initial revision
claus
parents:
diff changeset
   292
        Transcript tab. Transcript show:'    '.
470788421600 Initial revision
claus
parents:
diff changeset
   293
        Transcript showCr:((sumSelectors at:index) printString)
470788421600 Initial revision
claus
parents:
diff changeset
   294
    ]
470788421600 Initial revision
claus
parents:
diff changeset
   295
! !