Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
eca4081b
Commit
eca4081b
authored
Jul 12, 2012
by
neverlord
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ported scala benchmark to akka >= 2.0
parent
04dac9d4
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
17 additions
and
15 deletions
+17
-15
benchmarks/scala/ActorCreation.scala
benchmarks/scala/ActorCreation.scala
+0
-0
benchmarks/scala/Distributed.scala
benchmarks/scala/Distributed.scala
+0
-0
benchmarks/scala/MailboxPerformance.scala
benchmarks/scala/MailboxPerformance.scala
+4
-3
benchmarks/scala/Matching.scala
benchmarks/scala/Matching.scala
+0
-0
benchmarks/scala/MixedCase.scala
benchmarks/scala/MixedCase.scala
+13
-12
No files found.
benchmarks/ActorCreation.scala
→
benchmarks/
scala/
ActorCreation.scala
View file @
eca4081b
File moved
benchmarks/Distributed.scala
→
benchmarks/
scala/
Distributed.scala
View file @
eca4081b
File moved
benchmarks/MailboxPerformance.scala
→
benchmarks/
scala/
MailboxPerformance.scala
View file @
eca4081b
import
scala.actors.Actor
import
scala.actors.Actor
import
scala.actors.Actor._
import
scala.actors.Actor._
import
akka.actor.
Actor.actorOf
import
akka.actor.
{
Props
,
Actor
=>
AkkaActor
,
ActorRef
=>
AkkaActorRef
,
ActorSystem
}
import
scala.annotation.tailrec
import
scala.annotation.tailrec
case
object
Msg
case
object
Msg
...
@@ -37,7 +37,7 @@ class AkkaReceiver(n: Long) extends akka.actor.Actor {
...
@@ -37,7 +37,7 @@ class AkkaReceiver(n: Long) extends akka.actor.Actor {
received
+=
1
received
+=
1
if
(
received
==
n
)
{
if
(
received
==
n
)
{
global
.
latch
.
countDown
global
.
latch
.
countDown
self
.
exit
context
.
stop
(
self
)
}
}
}
}
}
}
...
@@ -66,7 +66,8 @@ object MailboxPerformance {
...
@@ -66,7 +66,8 @@ object MailboxPerformance {
}).
start
}).
start
}
}
else
{
else
{
val
rcvRef
=
actorOf
(
new
AkkaReceiver
(
threads
*
msgs
)).
start
val
system
=
ActorSystem
()
val
rcvRef
=
system
.
actorOf
(
Props
(
new
AkkaReceiver
(
threads
*
msgs
)))
for
(
i
<-
0
until
threads
)
for
(
i
<-
0
until
threads
)
(
new
java
.
lang
.
Thread
{
(
new
java
.
lang
.
Thread
{
override
def
run
()
{
for
(
_
<-
0
until
msgs
)
rcvRef
!
Msg
}
override
def
run
()
{
for
(
_
<-
0
until
msgs
)
rcvRef
!
Msg
}
...
...
benchmarks/Matching.scala
→
benchmarks/
scala/
Matching.scala
View file @
eca4081b
File moved
benchmarks/MixedCase.scala
→
benchmarks/
scala/
MixedCase.scala
View file @
eca4081b
import
scala.actors.Actor
import
scala.actors.Actor
import
scala.actors.Actor._
import
scala.actors.Actor._
import
akka.actor.
Actor.actorOf
import
akka.actor.
{
Props
,
Actor
=>
AkkaActor
,
ActorRef
=>
AkkaActorRef
,
ActorSystem
}
import
scala.annotation.tailrec
import
scala.annotation.tailrec
case
class
Token
(
value
:
Int
)
case
class
Token
(
value
:
Int
)
...
@@ -146,16 +146,16 @@ class ThreadlessSupervisor(numMessages: Int) extends Actor {
...
@@ -146,16 +146,16 @@ class ThreadlessSupervisor(numMessages: Int) extends Actor {
override
def
act
()
=
rcv
(
numMessages
)
override
def
act
()
=
rcv
(
numMessages
)
}
}
class
AkkaWorker
(
supervisor
:
akka.actor.ActorRef
)
extends
akka
.
actor
.
Actor
{
class
AkkaWorker
(
supervisor
:
AkkaActorRef
)
extends
Akka
Actor
{
def
receive
=
{
def
receive
=
{
case
Calc
(
value
)
=>
supervisor
!
Factors
(
global
.
factorize
(
value
))
case
Calc
(
value
)
=>
supervisor
!
Factors
(
global
.
factorize
(
value
))
case
Done
=>
self
.
exit
case
Done
=>
context
.
stop
(
self
)
}
}
}
}
class
AkkaChainLink
(
next
:
akka.actor.ActorRef
)
extends
akka
.
actor
.
Actor
{
class
AkkaChainLink
(
next
:
AkkaActorRef
)
extends
Akka
Actor
{
def
receive
=
{
def
receive
=
{
case
Token
(
value
)
=>
next
!
Token
(
value
);
if
(
value
==
0
)
self
.
exit
case
Token
(
value
)
=>
next
!
Token
(
value
);
if
(
value
==
0
)
context
.
stop
(
self
)
}
}
}
}
...
@@ -165,10 +165,10 @@ class AkkaChainMaster(supervisor: akka.actor.ActorRef) extends akka.actor.Actor
...
@@ -165,10 +165,10 @@ class AkkaChainMaster(supervisor: akka.actor.ActorRef) extends akka.actor.Actor
var
iteration
=
0
var
iteration
=
0
var
rsize
=
0
var
rsize
=
0
var
next
:
akka.actor.ActorRef
=
null
var
next
:
akka.actor.ActorRef
=
null
val
worker
=
actorOf
(
new
AkkaWorker
(
supervisor
)).
start
val
worker
=
context
.
actorOf
(
Props
(
new
AkkaWorker
(
supervisor
)))
@tailrec
final
def
newRing
(
next
:
akka.actor.ActorRef
,
rsize
:
Int
)
:
akka.actor.ActorRef
=
{
@tailrec
final
def
newRing
(
next
:
akka.actor.ActorRef
,
rsize
:
Int
)
:
akka.actor.ActorRef
=
{
if
(
rsize
==
0
)
next
if
(
rsize
==
0
)
next
else
newRing
(
actorOf
(
new
AkkaChainLink
(
next
)).
start
,
rsize
-
1
)
else
newRing
(
context
.
actorOf
(
Props
(
new
AkkaChainLink
(
next
)))
,
rsize
-
1
)
}
}
def
initialized
:
Receive
=
{
def
initialized
:
Receive
=
{
case
Token
(
0
)
=>
case
Token
(
0
)
=>
...
@@ -182,7 +182,7 @@ class AkkaChainMaster(supervisor: akka.actor.ActorRef) extends akka.actor.Actor
...
@@ -182,7 +182,7 @@ class AkkaChainMaster(supervisor: akka.actor.ActorRef) extends akka.actor.Actor
{
{
worker
!
Done
worker
!
Done
supervisor
!
MasterExited
supervisor
!
MasterExited
self
.
exit
context
.
stop
(
self
)
}
}
case
Token
(
value
)
=>
next
!
Token
(
value
-
1
)
case
Token
(
value
)
=>
next
!
Token
(
value
-
1
)
}
}
...
@@ -192,7 +192,7 @@ class AkkaChainMaster(supervisor: akka.actor.ActorRef) extends akka.actor.Actor
...
@@ -192,7 +192,7 @@ class AkkaChainMaster(supervisor: akka.actor.ActorRef) extends akka.actor.Actor
worker
!
Calc
(
global
.
taskN
)
worker
!
Calc
(
global
.
taskN
)
next
=
newRing
(
self
,
rsize
-
1
)
next
=
newRing
(
self
,
rsize
-
1
)
next
!
Token
(
initialTokenValue
)
next
!
Token
(
initialTokenValue
)
become
(
initialized
)
context
.
become
(
initialized
)
}
}
}
}
...
@@ -202,7 +202,7 @@ class AkkaSupervisor(numMessages: Int) extends akka.actor.Actor {
...
@@ -202,7 +202,7 @@ class AkkaSupervisor(numMessages: Int) extends akka.actor.Actor {
i
+=
1
;
i
+=
1
;
if
(
i
==
numMessages
)
{
if
(
i
==
numMessages
)
{
global
.
latch
.
countDown
global
.
latch
.
countDown
self
.
exit
context
.
stop
(
self
)
}
}
}
}
def
receive
=
{
def
receive
=
{
...
@@ -238,9 +238,10 @@ object MixedCase {
...
@@ -238,9 +238,10 @@ object MixedCase {
(
new
ThreadlessChainMaster
(
s
)).
start
!
initMsg
(
new
ThreadlessChainMaster
(
s
)).
start
!
initMsg
}
}
else
if
(
impl
==
"akka"
)
{
else
if
(
impl
==
"akka"
)
{
val
s
=
actorOf
(
new
AkkaSupervisor
(
numMessages
)).
start
val
system
=
ActorSystem
();
val
s
=
system
.
actorOf
(
Props
(
new
AkkaSupervisor
(
numMessages
)))
for
(
_
<-
0
until
numRings
)
for
(
_
<-
0
until
numRings
)
actorOf
(
new
AkkaChainMaster
(
s
)).
start
!
initMsg
system
.
actorOf
(
Props
(
new
AkkaChainMaster
(
s
)))
!
initMsg
global
.
latch
.
await
global
.
latch
.
await
}
}
else
usage
else
usage
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment