RemoteActor を使ってみた [Scala]
きっかけはどう書く?orgの「分散関数呼び出し」というお題 [1] で、そういえば Scala に scala.actors.remote っていうパッケージあったなと思って使ってみた。
使い方はかなり簡単。これがサーバ。
import scala.actors.Actor._
import scala.actors.remote.RemoteActor._
object RemoteServer {
def main(args: Array[String]) {
actor {
alive(9000)
register('priceString, self)
loop {
react {
case ('priceString, price: Int, discount: Int) =>
val result =
"販売価格" + (price * (100 - discount) / 100) + "円" +
"(定価" + price + "円から" + discount + "%引き)"
reply(result)
case 'shutdown => exit
}
}
}
}
}
クライアントからはこんな風に使う。
import scala.actors.remote.RemoteActor._
import scala.actors.remote.Node
val c = select(new Node("127.0.0.1", 9000), 'priceString)
c !? ('priceString, 2000, 100)
しかしパフォーマンスについてはCeleron2.8GHz/768MBメモリの同一マシンで10000回呼び出したところ110秒とかそんな感じの結果だった。どうも見劣りするなあ。
コメント 0