benchmarks/Threadring.st
author vranyj1
Mon, 03 Dec 2012 19:28:28 +0000
branchdevelopment
changeset 1856 f2e8307a717f
parent 1818 2e5ed72e7dfd
child 2014 9fa66342102b
permissions -rw-r--r--
Fix for JavaLookupTests>>testTypeOverloading
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1761
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     1
"{ Package: 'stx:libjava/benchmarks' }"
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     2
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     3
JavaBenchmark subclass:#Threadring
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     4
	instanceVariableNames:''
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     5
	classVariableNames:''
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     6
	poolDictionaries:''
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     7
	category:'Benchmarks-Java-Micro'
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     8
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
     9
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    10
Object subclass:#Thread
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    11
	instanceVariableNames:'name nextThread token semaphore done'
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    12
	classVariableNames:''
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    13
	poolDictionaries:''
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    14
	privateIn:Threadring
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    15
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    16
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    17
1762
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    18
!Threadring methodsFor:'benchmarking'!
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    19
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    20
threadRing: aSemaphore
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    21
   | first last |
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    22
   503 to: 1 by: -1 do: [:i| 
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    23
      first := Thread named: i next: first done: aSemaphore.
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    24
      last isNil ifTrue: [ last := first ].
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    25
   ].
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    26
   last nextThread: first.
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    27
   ^first 
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    28
! !
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    29
1761
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    30
!Threadring methodsFor:'running'!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    31
1762
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    32
runBenchmarkS:n 
d67be8cbec02 - JavaBenchmark
vranyj1
parents: 1761
diff changeset
    33
    ^ 'N/A'
1761
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    34
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    35
    "Created: / 31-10-2012 / 10:22:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    36
! !
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    37
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    38
!Threadring::Thread class methodsFor:'instance creation'!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    39
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    40
named: anInteger next: aThread done: aSemaphore
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    41
   ^self new name: anInteger; nextThread: aThread; done: aSemaphore; fork 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    42
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    43
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    44
new
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    45
   ^self basicNew semaphore: Semaphore new 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    46
! !
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    47
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    48
!Threadring::Thread methodsFor:'accessing'!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    49
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    50
done: aSemaphore
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    51
   done := aSemaphore 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    52
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    53
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    54
fork
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    55
   [ self run ] fork 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    56
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    57
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    58
name: anInteger
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    59
   name := anInteger 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    60
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    61
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    62
nextThread: aThread
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    63
   nextThread := aThread 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    64
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    65
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    66
run 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    67
   [ self tokenNotDone ] whileTrue: [ nextThread takeToken: token - 1 ].
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    68
   done signal 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    69
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    70
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    71
semaphore: aSemaphore
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    72
   semaphore := aSemaphore 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    73
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    74
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    75
takeToken: x
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    76
   token := x.
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    77
   semaphore signal 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    78
!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    79
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    80
tokenNotDone
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    81
   semaphore wait.
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    82
   ^token > 0 
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    83
! !
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    84
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    85
!Threadring class methodsFor:'documentation'!
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    86
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    87
version_SVN
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    88
    ^ '$Id::                                                                                                                        $'
dba3db31ea2a Initial port of benchmarks
vranyj1
parents:
diff changeset
    89
! !