/usr/share/gnu-smalltalk/unsupported/Profile.st is in gnu-smalltalk-common 3.2.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | Bag subclass: #IdentityBag
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: ''
!IdentityBag methodsFor: 'private'!
dictionaryClass
^IdentityDictionary! !
!BlockClosure methodsFor: 'profiling'!
profile
| s profProcess workProcess results |
s := Semaphore new.
results := IdentityBag new.
workProcess := self newProcess.
profProcess := [
workProcess resume.
[
(Delay forMilliseconds: 5) wait.
workProcess isTerminated
] whileFalse: [
results add: workProcess suspendedContext method.
].
s signal
] forkAt: Processor highIOPriority.
s wait.
^results sortedByCount
! !
[
| n c hash |
n := 20000.
hash := LookupTable new: n * 2.
1 to: n do: [ :each |
hash at: (each printString: 16) put: 1
].
c := 0.
n to: 1 by: -1 do: [ :each |
(hash includesKey: each printString) ifTrue: [ c := c + 1]
].
] profile do: [ :each | each printNl ]!
|