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
0f84f0a6
Commit
0f84f0a6
authored
Aug 31, 2012
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'unstable' of github.com:Neverlord/libcppa into unstable
parents
975b8ccb
58d3373d
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
342 additions
and
193 deletions
+342
-193
CMakeLists.txt
CMakeLists.txt
+10
-1
benchmarks/cppa_test.sh
benchmarks/cppa_test.sh
+1
-1
benchmarks/erlang_test.sh
benchmarks/erlang_test.sh
+1
-1
benchmarks/mk_erlang.sh
benchmarks/mk_erlang.sh
+0
-6
benchmarks/mk_scala.sh
benchmarks/mk_scala.sh
+0
-11
benchmarks/record_mem_usage.sh
benchmarks/record_mem_usage.sh
+38
-0
benchmarks/scala/ActorCreation.scala
benchmarks/scala/ActorCreation.scala
+45
-30
benchmarks/scala/Distributed.scala
benchmarks/scala/Distributed.scala
+45
-27
benchmarks/scala/MailboxPerformance.scala
benchmarks/scala/MailboxPerformance.scala
+39
-30
benchmarks/scala/Makefile
benchmarks/scala/Makefile
+31
-8
benchmarks/scala/Matching.scala
benchmarks/scala/Matching.scala
+48
-42
benchmarks/scala/MixedCase.scala
benchmarks/scala/MixedCase.scala
+48
-33
benchmarks/scala/Utility.scala
benchmarks/scala/Utility.scala
+21
-0
benchmarks/scala_test.sh
benchmarks/scala_test.sh
+14
-3
cppa.files
cppa.files
+1
-0
No files found.
CMakeLists.txt
View file @
0f84f0a6
...
...
@@ -61,7 +61,12 @@ endif ()
if
(
ENABLE_DEBUG
)
set
(
CMAKE_BUILD_TYPE Debug
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-DCPPA_DEBUG"
)
else
()
#else ()
# set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif
()
# set build default build type if not set
if
(
not CMAKE_BUILD_TYPE
)
set
(
CMAKE_BUILD_TYPE RelWithDebInfo
)
endif
()
...
...
@@ -155,6 +160,10 @@ if (NOT DISABLE_CONTEXT_SWITCHING)
)
endif
()
if
(
BOOST_ROOT
)
# Prevent falling back to system paths when using a custom Boost prefix.
set
(
Boost_NO_SYSTEM_PATHS true
)
endif
()
find_package
(
Boost REQUIRED
)
find_package
(
PTHREAD REQUIRED
)
...
...
benchmarks/cppa_test.sh
View file @
0f84f0a6
#!/bin/bash
echo
"./
$@
"
| ./exec.sh
echo
".
./build/bin
/
$@
"
| ./exec.sh
benchmarks/erlang_test.sh
View file @
0f84f0a6
#!/bin/bash
echo
"erl -noshell -noinput +P 20000000 -setcookie abc123 -sname benchmark -s
$@
-s init stop"
| ./exec.sh
echo
"erl -noshell -noinput +P 20000000 -setcookie abc123 -sname benchmark -
pa erlang -
s
$@
-s init stop"
| ./exec.sh
benchmarks/mk_erlang.sh
deleted
100755 → 0
View file @
975b8ccb
#!/bin/bash
for
i
in
*
.erl
;
do
echo
"compile
$i
..."
erlc
"
$i
"
done
echo
done
benchmarks/mk_scala.sh
deleted
100755 → 0
View file @
975b8ccb
#!/bin/bash
if
[[
$#
-eq
0
]]
;
then
for
i
in
*
.scala
;
do
echo
"compile
\"
$i
\"
"
scalac
-unchecked
-cp
$AKKA_LIBS
"
$i
"
done
elif
[[
$#
-eq
1
]]
;
then
echo
"compile
\"
$1
.scala
\"
"
scalac
-unchecked
-cp
$AKKA_LIBS
"
$1
.scala"
fi
echo
done
benchmarks/record_mem_usage.sh
0 → 100755
View file @
0f84f0a6
#!/bin/bash
usage
=
"
\
Usage:
$0
INTERVAL CMD
example:
$0
0.5
\"
my_benchmark_program arg0 arg1 arg2
\"
"
if
[
"$#"
!=
"2"
]
;
then
echo
"
${
usage
}
"
1>&2
exit
fi
runtime
=
""
line
=
$(
cat
/proc/1/status |
grep
"^Vm"
|
awk
'BEGIN {printf "%-10s", "elapsed"} {printf "%-20s", $1} END {print ""}'
)
exec
$2
&
pid
=
$!
interval
=
$1
dtime
=
$(
date
"+%s%N"
)
time0
=
$(
echo
"
$dtime
/ 1000000"
| bc
-q
)
fields
=
$(
echo
"
$line
"
|
wc
-w
)
while
[
"
$fields
"
-gt
"1"
]
;
do
echo
"
$line
"
if
[
-n
"
$runtime
"
]
;
then
sleep
$interval
runtime
=
$(
echo
$runtime
+
$interval
| bc
-q
)
else
runtime
=
0
fi
dtime
=
$(
date
"+%s%N"
)
timeN
=
$(
echo
"(
$dtime
/ 1000000 ) -
$time0
"
| bc
-q
)
timeN_sec
=
$(
echo
"scale=2;
$timeN
/ 1000"
| bc
)
line
=
$(
cat
/proc/
${
pid
}
/status 2>/dev/null |
grep
"^Vm"
|
awk
-v
rt
=
$timeN_sec
'BEGIN {printf "%-10s", rt} {printf "%-20s", ($2 " " $3)} END {print ""}'
)
fields
=
$(
echo
"
$line
"
|
wc
-w
)
done
benchmarks/scala/ActorCreation.scala
View file @
0f84f0a6
package
org.libcppa.actor_creation
import
org.libcppa.utility.IntStr
import
scala.actors.Actor
import
scala.actors.Actor._
import
akka.actor.
{
Props
,
Actor
=>
AkkaActor
,
ActorRef
=>
AkkaActorRef
,
ActorSystem
}
...
...
@@ -91,17 +95,9 @@ class AkkaRootTestee(n: Int) extends AkkaActor {
}
}
object
ActorCreation
{
def
usage
()
{
Console
println
"usage: (threaded|threadless|akka) POW\n creates 2^POW actors of given impl"
}
def
main
(
args
:
Array
[
String
])
:
Unit
=
{
if
(
args
.
size
!=
2
)
{
usage
throw
new
IllegalArgumentException
(
""
)
}
val
n
=
args
(
1
).
toInt
if
(
args
(
0
)
==
"threaded"
)
{
class
ActorCreation
(
n
:
Int
)
{
def
runThreaded
()
{
val
newMax
=
(
1
<<
n
)
+
100
System
.
setProperty
(
"actors.maxPoolSize"
,
newMax
.
toString
)
(
new
ThreadedTestee
(
self
)).
start
!
Spread
(
n
)
...
...
@@ -111,7 +107,8 @@ object ActorCreation {
Console
.
println
(
"ERROR: expected "
+
(
1
<<
n
)
+
", received "
+
v
)
}
}
else
if
(
args
(
0
)
==
"threadless"
)
{
def
runThreadless
()
{
actor
{
(
new
ThreadlessTestee
(
self
)).
start
!
Spread
(
n
)
react
{
...
...
@@ -121,14 +118,32 @@ object ActorCreation {
}
}
}
else
if
(
args
(
0
)
==
"akka"
)
{
def
runAkka
()
{
val
system
=
ActorSystem
()
system
.
actorOf
(
Props
(
new
AkkaRootTestee
(
n
)))
!
GoAhead
global
.
latch
.
await
system
.
shutdown
System
.
exit
(
0
)
}
else
usage
}
object
Main
{
def
usage
()
{
Console
println
"usage: (threaded|threadless|akka) POW\n creates 2^POW actors of given impl"
}
def
main
(
args
:
Array
[
String
])
:
Unit
=
args
match
{
case
Array
(
impl
,
IntStr
(
n
))
=>
{
val
prog
=
new
ActorCreation
(
n
)
impl
match
{
case
"threaded"
=>
prog
.
runThreaded
case
"threadless"
=>
prog
.
runThreadless
case
"akka"
=>
prog
.
runAkka
case
_
=>
usage
}
}
case
_
=>
usage
}
}
benchmarks/scala/Distributed.scala
View file @
0f84f0a6
package
org.libcppa.distributed
import
org.libcppa.utility._
import
scala.actors._
import
scala.actors.Actor.self
import
scala.actors.remote.RemoteActor
...
...
@@ -313,12 +317,24 @@ class AkkaClientActor(system: ActorSystem) extends AkkaActor {
}
}
object
Distributed
{
class
Distributed
{
def
runServer
(
port
:
Int
)
{
(
new
ServerActor
(
port
)).
start
}
def
runAkkaServer
()
{
val
system
=
ActorSystem
(
"pongServer"
,
ConfigFactory
.
load
.
getConfig
(
"pongServer"
))
system
.
actorOf
(
Props
(
new
AkkaServerActor
(
system
)),
"pong"
)
}
//private val NumPings = "num_pings=([0-9]+)".r
private
val
SimpleUri
=
"([0-9a-zA-Z\\.]+):([0-9]+)"
.
r
@tailrec
def
run
(
args
:
List
[
String
],
paths
:
List
[
String
],
numPings
:
Option
[
Int
],
finalizer
:
(
List
[
String
],
Int
)
=>
Unit
)
:
Unit
=
args
match
{
case
NumPings
(
num
)
::
tail
=>
numPings
match
{
@tailrec
private
def
run
(
args
:
List
[
String
],
paths
:
List
[
String
],
numPings
:
Option
[
Int
],
finalizer
:
(
List
[
String
],
Int
)
=>
Unit
)
:
Unit
=
args
match
{
case
KeyValuePair
(
"num_pings"
,
IntStr
(
num
)
)
::
tail
=>
numPings
match
{
case
Some
(
x
)
=>
throw
new
IllegalArgumentException
(
"\"num_pings\" already defined, first value = "
+
x
+
", second value = "
+
num
)
case
None
=>
run
(
tail
,
paths
,
Some
(
num
.
toInt
),
finalizer
)
case
None
=>
run
(
tail
,
paths
,
Some
(
num
),
finalizer
)
}
case
arg
::
tail
=>
run
(
tail
,
arg
::
paths
,
numPings
,
finalizer
)
case
Nil
=>
numPings
match
{
...
...
@@ -330,26 +346,14 @@ object Distributed {
}
}
val
IntStr
=
"([0-9]+)"
.
r
val
NumPings
=
"num_pings=([0-9]+)"
.
r
val
SimpleUri
=
"([0-9a-zA-Z\\.]+):([0-9]+)"
.
r
def
main
(
args
:
Array
[
String
])
:
Unit
=
args
match
{
// server mode
case
Array
(
"mode=server"
,
"remote_actors"
,
IntStr
(
istr
))
=>
(
new
ServerActor
(
istr
.
toInt
)).
start
case
Array
(
"mode=server"
,
"akka"
)
=>
{
val
system
=
ActorSystem
(
"pongServer"
,
ConfigFactory
.
load
.
getConfig
(
"pongServer"
))
val
pong
=
system
.
actorOf
(
Props
(
new
AkkaServerActor
(
system
)),
"pong"
)
Unit
}
// client mode
case
Array
(
"mode=benchmark"
,
"remote_actors"
,
_
*)
=>
{
run
(
args
.
toList
.
drop
(
2
),
Nil
,
None
,
((
paths
,
x
)
=>
{
def
runBenchmark
(
args
:
List
[
String
])
{
run
(
args
,
Nil
,
None
,
((
paths
,
x
)
=>
{
(
new
ClientActor
(
paths
map
(
path
=>
path
match
{
case
SimpleUri
(
host
,
port
)
=>
RemoteActorPath
(
path
,
host
,
port
.
toInt
)
}),
x
)).
start
}))
}
case
Array
(
"mode=benchmark"
,
"akka"
,
_
*)
=>
{
run
(
args
.
toList
.
drop
(
2
),
Nil
,
None
,
((
paths
,
x
)
=>
{
def
runAkkaBenchmark
(
args
:
List
[
String
])
{
run
(
args
,
Nil
,
None
,
((
paths
,
x
)
=>
{
val
system
=
ActorSystem
(
"benchmark"
,
ConfigFactory
.
load
.
getConfig
(
"benchmark"
))
system
.
actorOf
(
Props
(
new
AkkaClientActor
(
system
)))
!
RunAkkaClient
(
paths
,
x
)
global
.
latch
.
await
...
...
@@ -357,6 +361,20 @@ object Distributed {
System
.
exit
(
0
)
}))
}
}
object
Main
{
val
prog
=
new
Distributed
def
main
(
args
:
Array
[
String
])
:
Unit
=
args
match
{
// server mode
case
Array
(
"mode=server"
,
"remote_actors"
,
IntStr
(
port
))
=>
prog
.
runServer
(
port
)
case
Array
(
"mode=server"
,
"akka"
)
=>
prog
.
runAkkaServer
// client mode
case
Array
(
"mode=benchmark"
,
"remote_actors"
,
_
*)
=>
prog
.
runBenchmark
(
args
.
toList
.
drop
(
2
))
case
Array
(
"mode=benchmark"
,
"akka"
,
_
*)
=>
prog
.
runAkkaBenchmark
(
args
.
toList
.
drop
(
2
))
// error
case
_
=>
{
println
(
"Running in server mode:\n"
+
...
...
benchmarks/scala/MailboxPerformance.scala
View file @
0f84f0a6
package
org.libcppa.mailbox_performance
import
org.libcppa.utility._
import
scala.actors.Actor
import
scala.actors.Actor._
import
akka.actor.
{
Props
,
Actor
=>
AkkaActor
,
ActorRef
=>
AkkaActorRef
,
ActorSystem
}
...
...
@@ -42,39 +46,44 @@ class AkkaReceiver(n: Long) extends akka.actor.Actor {
}
}
object
MailboxPerformance
{
def
usage
()
{
Console
println
"usage: (threaded|threadless|akka) (num_threads) (msgs_per_thread)"
class
MailboxPerformance
(
threads
:
Int
,
msgs
:
Int
)
{
val
total
=
threads
*
msgs
;
def
run
[
T
](
testee
:
T
,
fun
:
T
=>
Unit
)
{
for
(
_
<-
0
until
threads
)
{
(
new
Thread
{
override
def
run
()
{
for
(
_
<-
0
until
msgs
)
fun
(
testee
)
}
}).
start
}
def
main
(
args
:
Array
[
String
])
=
{
if
(
args
.
size
!=
3
)
{
usage
throw
new
IllegalArgumentException
(
""
)
}
val
threads
=
args
(
1
).
toInt
val
msgs
=
args
(
2
).
toInt
val
impl
=
List
(
"threaded"
,
"threadless"
,
"akka"
).
indexOf
(
args
(
0
))
if
(
impl
==
-
1
)
{
usage
def
runThreaded
()
{
run
((
new
ThreadedReceiver
(
total
)).
start
,
{(
a
:
Actor
)
=>
a
!
Msg
})
}
else
if
(
impl
<
2
)
{
val
rcvRef
=
if
(
impl
==
0
)
(
new
ThreadedReceiver
(
threads
*
msgs
)).
start
else
(
new
ThreadlessReceiver
(
threads
*
msgs
)).
start
for
(
i
<-
0
until
threads
)
(
new
java
.
lang
.
Thread
{
override
def
run
()
{
for
(
_
<-
0
until
msgs
)
rcvRef
!
Msg
}
}).
start
def
runThreadless
()
{
run
((
new
ThreadlessReceiver
(
total
)).
start
,
{(
a
:
Actor
)
=>
a
!
Msg
})
}
else
{
def
runAkka
()
{
val
system
=
ActorSystem
()
val
rcvRef
=
system
.
actorOf
(
Props
(
new
AkkaReceiver
(
threads
*
msgs
)))
for
(
i
<-
0
until
threads
)
(
new
java
.
lang
.
Thread
{
override
def
run
()
{
for
(
_
<-
0
until
msgs
)
rcvRef
!
Msg
}
}).
start
run
(
system
.
actorOf
(
Props
(
new
AkkaReceiver
(
total
))),
{(
a
:
AkkaActorRef
)
=>
a
!
Msg
})
global
.
latch
.
await
system
.
shutdown
System
.
exit
(
0
)
}
}
object
Main
{
def
usage
()
{
Console
println
"usage: (threaded|threadless|akka) (num_threads) (msgs_per_thread)"
}
def
main
(
args
:
Array
[
String
])
:
Unit
=
args
match
{
case
Array
(
impl
,
IntStr
(
threads
),
IntStr
(
msgs
))
=>
{
val
prog
=
new
MailboxPerformance
(
threads
,
msgs
)
impl
match
{
case
"threaded"
=>
prog
.
runThreaded
case
"threadless"
=>
prog
.
runThreadless
case
"akka"
=>
prog
.
runAkka
case
_
=>
usage
}
}
case
_
=>
usage
}
}
benchmarks/scala/Makefile
View file @
0f84f0a6
C
C
=
scalac
LIBPATH
=
/home/neverlord/akka-2.0.
1
/lib/akka
SCALA
C
=
scalac
LIBPATH
=
/home/neverlord/akka-2.0.
3
/lib/akka
CLASSPATH
=
$(
shell
for
i
in
$(LIBPATH)
/
*
.jar
;
do
printf
%s
$$
i:
;
done
)
#CLASSPATH=$(LIBPATH)/akka-kernel-2.0.3.jar:$(LIBPATH)/akka-actor-2.0.3.jar
FLAGS
=
-cp
$(CLASSPATH)
FILES
=
ActorCreation.scala Distributed.scala MailboxPerformance.scala MixedCase.scala Matching.scala
CLASS
ES
=
$(FILES:.scala=.class)
#
FILES=ActorCreation.scala Distributed.scala MailboxPerformance.scala MixedCase.scala Matching.scala
#CLASS_FIL
ES=$(FILES:.scala=.class)
%.class
:
%
.scala
$(CC)
$(FLAGS)
$<
FILES
=
ActorCreation.scala Distributed.scala MailboxPerformance.scala Matching.scala MixedCase
.scala
CLASS_FILES
=
$(
foreach
FILE,
$(FILES)
,org/libcppa/
$(
shell
echo
$(FILE:.scala=)
|
sed
's/\(.\)\([A-Z]\)/\1_\2/g'
|
tr
[
:upper:]
[
:lower:]
)
/
$(FILE:.scala=.class)
)
all
:
$(CLASSES)
UTILITY
=
org/libcppa/utility/Utility.class
all
:
$(CLASS_FILES)
org/libcppa/utility/Utility.class
:
Utility.scala
$(SCALAC)
$(FLAGS)
Utility.scala
#$(CLASS_FILES): $(FILES) org/libcppa/utility/Utility.class
org/libcppa/actor_creation/ActorCreation.class
:
ActorCreation.scala $(UTILITY)
$(SCALAC)
$(FLAGS)
$<
org/libcppa/distributed/Distributed.class
:
Distributed.scala $(UTILITY)
$(SCALAC)
$(FLAGS)
$<
org/libcppa/mailbox_performance/MailboxPerformance.class
:
MailboxPerformance.scala $(UTILITY)
$(SCALAC)
$(FLAGS)
$<
org/libcppa/matching/Matching.class
:
Matching.scala $(UTILITY)
$(SCALAC)
$(FLAGS)
$<
org/libcppa/mixed_case/MixedCase.class
:
MixedCase.scala $(UTILITY)
$(SCALAC)
$(FLAGS)
$<
clean
:
rm
-
f
*
.class
rm
-
rf
org/
.PHONY
:
all clean
benchmarks/scala/Matching.scala
View file @
0f84f0a6
package
org.libcppa.matching
import
org.libcppa.utility._
import
Console.println
import
scala.
{
PartialFunction
=>
PF
}
...
...
@@ -9,13 +13,8 @@ case class Msg5(val0: Int, val1: Int, val2: Int)
case
class
Msg6
(
val0
:
Int
,
val1
:
Double
,
val2
:
String
)
object
Matching
{
def
main
(
args
:
Array
[
String
])
=
{
if
(
args
.
size
!=
1
)
{
println
(
"usage: Matching {NUM_LOOPS}"
)
System
.
exit
(
1
)
}
def
apply
(
numLoops
:
Long
)
{
val
zero
:
Long
=
0
val
numLoops
=
args
(
0
).
toLong
var
msg1Matched
:
Long
=
0
;
var
msg2Matched
:
Long
=
0
;
var
msg3Matched
:
Long
=
0
;
...
...
@@ -53,3 +52,10 @@ object Matching {
println
(
"msg1Matched = "
+
msg1Matched
.
toString
)
}
}
object
Main
{
def
main
(
args
:
Array
[
String
])
=
args
match
{
case
Array
(
IntStr
(
numLoops
))
=>
Matching
(
numLoops
)
case
_
=>
println
(
"usage: Matching {NUM_LOOPS}"
)
}
}
benchmarks/scala/MixedCase.scala
View file @
0f84f0a6
package
org.libcppa.mixed_case
import
org.libcppa.utility.IntStr
import
scala.actors.Actor
import
scala.actors.Actor._
import
akka.actor.
{
Props
,
Actor
=>
AkkaActor
,
ActorRef
=>
AkkaActorRef
,
ActorSystem
}
...
...
@@ -212,41 +216,52 @@ class AkkaSupervisor(numMessages: Int) extends AkkaActor {
}
}
object
MixedCase
{
def
usage
()
:
Nothing
=
{
Console
println
"usage: ('threaded'|'threadless'|'akka') (num rings) (ring size) (initial token value) (repetitions)"
System
.
exit
(
1
)
// why doesn't exit return Nothing?
throw
new
RuntimeException
(
""
)
}
def
main
(
args
:
Array
[
String
])
:
Unit
=
{
if
(
args
.
size
!=
5
)
usage
val
numRings
=
args
(
1
).
toInt
val
ringSize
=
args
(
2
).
toInt
val
initialTokenValue
=
args
(
3
).
toInt
val
repetitions
=
args
(
4
).
toInt
val
initMsg
=
Init
(
ringSize
,
initialTokenValue
,
repetitions
)
val
numMessages
=
(
numRings
+
(
numRings
*
repetitions
))
val
impl
=
args
(
0
)
if
(
impl
==
"threaded"
)
{
//System.setProperty("actors.maxPoolSize", (numRings + (numRings * ringSize) + 10).toString)
class
MixedCase
(
numRings
:
Int
,
ringSize
:
Int
,
initToken
:
Int
,
reps
:
Int
)
{
final
val
numMessages
=
numRings
+
(
numRings
*
reps
)
final
val
initMsg
=
Init
(
ringSize
,
initToken
,
reps
)
def
runThreaded
()
{
val
s
=
(
new
ThreadedSupervisor
(
numMessages
)).
start
for
(
_
<-
0
until
numRings
)
(
new
ThreadedChainMaster
(
s
)).
start
!
initMsg
}
else
if
(
impl
==
"threadless"
)
{
def
runThreadless
(
)
{
val
s
=
(
new
ThreadlessSupervisor
(
numMessages
)).
start
for
(
_
<-
0
until
numRings
)
(
new
ThreadlessChainMaster
(
s
)).
start
!
initMsg
}
else
if
(
impl
==
"akka"
)
{
def
runAkka
(
)
{
val
system
=
ActorSystem
();
val
s
=
system
.
actorOf
(
Props
(
new
AkkaSupervisor
(
numMessages
)))
for
(
_
<-
0
until
numRings
)
system
.
actorOf
(
Props
(
new
AkkaChainMaster
(
s
)))
!
initMsg
import
System.out.println
println
(
"awaiting latch"
)
global
.
latch
.
await
println
(
"shutdown akka system"
)
system
.
shutdown
println
(
"exit"
);
System
.
exit
(
0
)
}
else
usage
}
object
Main
{
def
usage
()
=
{
Console
println
"usage: ('threaded'|'threadless'|'akka') (num rings) (ring size) (initial token value) (repetitions)"
System
.
exit
(
1
)
// why doesn't exit return Nothing?
}
def
main
(
args
:
Array
[
String
])
:
Unit
=
args
match
{
case
Array
(
impl
,
IntStr
(
numRings
),
IntStr
(
ringSize
),
IntStr
(
initToken
),
IntStr
(
reps
))
=>
{
val
mc
=
new
MixedCase
(
numRings
,
ringSize
,
initToken
,
reps
);
impl
match
{
case
"threaded"
=>
mc
.
runThreaded
case
"threadless"
=>
mc
.
runThreadless
case
"akka"
=>
mc
.
runAkka
case
_
=>
usage
}
}
case
_
=>
usage
}
}
benchmarks/scala/Utility.scala
0 → 100644
View file @
0f84f0a6
package
org.libcppa.utility
object
IntStr
{
val
IntRegex
=
"([0-9]+)"
.
r
def
unapply
(
s
:
String
)
:
Option
[
Int
]
=
s
match
{
case
IntRegex
(
`s`
)
=>
Some
(
s
.
toInt
)
case
_
=>
None
}
}
object
KeyValuePair
{
val
Rx
=
"([^=])+=([^=]*)"
.
r
def
unapply
(
s
:
String
)
:
Option
[
Pair
[
String
,
String
]]
=
s
match
{
case
Rx
(
key
,
value
)
=>
Some
(
Pair
(
key
,
value
))
case
_
=>
None
}
}
class
Utility
{
}
benchmarks/scala_test.sh
View file @
0f84f0a6
#!/bin/bash
#export JAVA_OPTS="-Xmx1024"
#echo "scala -cp /home/neverlord/akka-microkernel-1.2/lib/akka/akka-actor-1.2.jar $@" | ./exec.sh
JARS
=
/home/neverlord/akka-microkernel-1.2/lib/akka/activation-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-actor-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-actor-tests-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-amqp-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-beanstalk-mailbox-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-camel-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-camel-typed-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-dispatcher-extras-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-file-mailbox-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-http-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-kernel-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-mailboxes-common-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-redis-mailbox-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-remote-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-scalaz-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-slf4j-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-spring-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-stm-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-testkit-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-typed-actor-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/amqp-client-2.5.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/aopalliance-1.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/asm-3.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/aspectwerkz-2.2.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/beanstalk_client-1.4.5.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/camel-core-2.7.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-cli-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-codec-1.4.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-io-2.0.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-logging-1.1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-management-1.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-pool-1.5.5.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/dispatch-json_2.9.0-0.8.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/guice-all-2.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/h2-lzf-1.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/hawtdispatch-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/hawtdispatch-scala-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jackson-core-asl-1.8.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jackson-mapper-asl-1.8.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jaxb-api-2.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jaxb-impl-2.1.12.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jersey-core-1.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jersey-json-1.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jersey-scala-1.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jersey-server-1.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jettison-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-continuation-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-http-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-io-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-security-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-server-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-servlet-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-util-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-xml-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jsr250-api-1.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jsr311-api-1.1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jsr311-api-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/junit-4.8.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/log4j-1.2.16.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/multiverse-alpha-0.6.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/netty-3.2.5.Final.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/objenesis-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/protobuf-java-2.4.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/redisclient_2.9.0-2.3.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/scalaz-core_2.9.0-1-6.0.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/servlet-api-2.5.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/sjson_2.9.0-0.11.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/slf4j-api-1.5.8.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/slf4j-api-1.6.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/slf4j-log4j12-1.5.8.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-aop-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-asm-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-beans-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-context-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-core-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-expression-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/stax-api-1.0.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/stax-api-1.0-2.jar
echo
"scala -cp
$JARS
$@
"
| ./exec.sh
if
[
!
-d
$PWD
/scala
]
;
then
echo
"
$PWD
/scala is not a valid directory!"
exit
fi
AKKA_LIBS
=
/
$HOME
/akka-2.0.3/lib/scala-library.jar
for
JAR
in
/
$HOME
/akka-2.0.3/lib/akka/
*
.jar
;
do
AKKA_LIBS
=
$JAR
:
$AKKA_LIBS
done
arg0
=
org.libcppa.
$1
.Main
shift
JARS
=
"
$AKKA_LIBS
"
:
$PWD
/scala/
echo
"java -cp
$JARS
$arg0
$@
"
| ./exec.sh
cppa.files
View file @
0f84f0a6
...
...
@@ -265,3 +265,4 @@ src/buffer.cpp
cppa/message_future.hpp
cppa/detail/fd_util.hpp
src/fd_util.cpp
benchmarks/scala/Utility.scala
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