author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 24 Jun 2013 01:37:29 +0100 | |
changeset 98 | 4266d340e722 |
parent 76 | 97cf7bf849e6 |
child 122 | 9ad7296fc59a |
permissions | -rw-r--r-- |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'jv:calipel/s' }" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
Object subclass:#BenchmarkRunner |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
instanceVariableNames:'debugging' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
classVariableNames:'' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
poolDictionaries:'' |
98
4266d340e722
Added user feedback info when running benchmarks using BenchmarkRunner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
76
diff
changeset
|
7 |
category:'CalipeL-S-Core-Runner' |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
!BenchmarkRunner class methodsFor:'documentation'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
documentation |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
Replace 'Object', 'NewClass1' and |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
the empty string arguments by true values. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
Install (or change) the class by 'accepting', |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
either via the menu or the keyboard (usually CMD-A). |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
You can also change the category simply by editing |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
the categoryString and accepting. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
To be nice to others (and yourself later), do not forget to |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
add some documentation; preferably under the classes documentation |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
protocol. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
(see the `create documentation stubs' item in the methodList menu; |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
switch from instance to class to find this menu item.) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
Notice, that ST/X uses the convention to document the class using |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
comment-only class methods (however, ST80 comments are supported and |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
can be changed via the class-documentation menu). |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
!BenchmarkRunner class methodsFor:'instance creation'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
new |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
"return an initialized instance" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
^ self basicNew initialize. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
!BenchmarkRunner methodsFor:'accessing'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
debugging |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
^ debugging |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
debugging:aBoolean |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
debugging := aBoolean. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
!BenchmarkRunner methodsFor:'error handling'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
exit: code |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
debugging ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
BenchmarkPlatform current exit: code |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
"Created: / 02-11-2012 / 02:32:10 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
"Modified: / 06-06-2013 / 09:13:42 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
!BenchmarkRunner methodsFor:'initialization'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
initialize |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
"Invoked when a new instance is created." |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
debugging := BenchmarkPlatform current isHeadless not |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
"Modified: / 06-06-2013 / 09:24:00 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
!BenchmarkRunner methodsFor:'main'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
main:argv |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
| i suite result report file params classes runs | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
params := Dictionary new. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
classes := OrderedCollection new. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
report := BenchmarkReport text. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
runs := 5. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
i := 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
[ i <= argv size ] whileTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
| arg | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
arg := argv at: i. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
i := i + 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
arg first == $- ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
arg = '-n' ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
runs := Integer readFrom: (argv at: i) onError:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
self error: '-n requires an integer parameter'. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
self exit: 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
i := i + 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
arg = '-o' ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
file := argv at: i. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
i := i + 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
arg = '-r' ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
| reportNm | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
reportNm := (argv at: i). |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
i := i + 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
report := Smalltalk at: reportNm asSymbol. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
109 |
report isNil ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
self error: 'No report class named ''', reportNm, ''''. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
arg = '--text' ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
report := BenchmarkReport text. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
115 |
]. |
29
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
116 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
117 |
arg = '--json' ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
118 |
report := BenchmarkReport json. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
]. |
29
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
120 |
|
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
121 |
arg second = $D ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
| eqIdx | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
((arg size > 2) and:[(eqIdx := arg indexOf: $= startingAt: 3) ~~ 0]) ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
125 |
params at: (arg copyFrom: 3 to: eqIdx - 1) put: (arg copyFrom: eqIdx + 1) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
127 |
self error: 'No parameter value' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
128 |
] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
classes add: arg. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
132 |
] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
133 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
134 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
135 |
"Build suite" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
136 |
suite := BenchmarkSuite new. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
137 |
classes do:[:each| |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
| classNm class selector | |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
i := each indexOf: $#. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
140 |
i ~~ 0 ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
classNm := each copyTo: i - 1. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
selector := (each copyFrom: i + 1) asSymbol. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
144 |
classNm := each. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
145 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
146 |
class := Smalltalk at: classNm asSymbol. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
147 |
class isNil ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
148 |
self error: 'Class ', classNm , ' does not exists'. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
149 |
]. |
76
97cf7bf849e6
Fix for Smalltalk/X: load the class if it is autoloaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
150 |
Smalltalk isSmalltalkX ifTrue:[ |
97cf7bf849e6
Fix for Smalltalk/X: load the class if it is autoloaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
151 |
class isLoaded ifFalse:[class autoload]. |
97cf7bf849e6
Fix for Smalltalk/X: load the class if it is autoloaded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
152 |
]. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
153 |
selector isNil ifTrue:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
154 |
suite addBenchmark: (BenchmarkSuite class: class) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
155 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
156 |
suite addBenchmark: (BenchmarkSuite class:class selector:selector) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
157 |
] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
158 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
159 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
160 |
"Run suite" |
98
4266d340e722
Added user feedback info when running benchmarks using BenchmarkRunner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
76
diff
changeset
|
161 |
result := BenchmarkRunnerResult new. |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
162 |
result runs: runs. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
163 |
suite run: result with: params. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
164 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
165 |
"Write report" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
166 |
file notNil ifTrue:[ |
29
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
167 |
file asFilename writingFileDo:[:s| |
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
168 |
report write: result on: s |
00d2eaa41853
Initial version of JSON report.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
17
diff
changeset
|
169 |
] |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
170 |
] ifFalse:[ |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
171 |
report write: result on: BenchmarkPlatform current stdout |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
172 |
]. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
173 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
self exit: 0. |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
175 |
|
98
4266d340e722
Added user feedback info when running benchmarks using BenchmarkRunner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
76
diff
changeset
|
176 |
"Modified: / 24-06-2013 / 01:14:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
9
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
179 |
options |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
180 |
"Prints common command line options to stderr" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
181 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
BenchmarkPlatform current stderr nextPutAll: |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
183 |
' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
184 |
Common options: |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
185 |
-o FILE ................ write output to FILE instead of to standard output (default: stdout) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
186 |
-n RUNS ................ how many times to run each bechmark (default: 5) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
-r REPORTCLASS ......... user REPORTCLASS to generate report (default: BenchmarkReportText) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
--text ................. generate text report (equivalent to -r BenchmarkReportText) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
--json ................. generate JSON report (equivalent to -r BenchmarkReportJSON) |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
-DNAME=VALUE ........... defines a parameter NAME with value of VALUE |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
192 |
Suitespec format: |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
193 |
<suitespec> is CLASSNAME[#SELECTOR] |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
195 |
More documetation: |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
196 |
see https://bitbucket.org/janvrany/jv-calipel/wiki/Home |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
197 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
200 |
"Created: / 06-06-2013 / 11:01:42 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
203 |
!BenchmarkRunner class methodsFor:'documentation'! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
204 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
version_HG |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
|
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
^ '$Changeset: <not expanded> $' |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
! ! |
e0be46520a59
Split BenchmarkRunner in common and platform-specific code. Addec platform object
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |