Sphereとともに

scalaとかplayframeworkとか。技術ブログにしたいなと。環境は Windows7x64, mac です。たまに声優さん情報が混ざります。最近ちょっとClojure触りました。

Scala並列処理

/**
 * Created by FScoward on 14/03/29.
 */

import org.atilika.kuromoji.Tokenizer
import scala.collection.JavaConversions._
import scala.io.Source
object Main {

  def main(args: Array[String]): Unit = {

    val text = Source.fromFile("sample.txt", "UTF-8").mkString

    println("### One")
    val before = System.currentTimeMillis()
    Tokenizer.builder().build()
      .tokenize(text)
      .iterator().toIterator
      .filter(t => t.getPartOfSpeech.contains("名詞"))
      .toTraversable.groupBy(t => t.getSurfaceForm).foreach(t => println(t._1 + ": " + t._2.size + " -> " + t._2.head.getAllFeatures))
    println("Time: " + (System.currentTimeMillis() - before) + "ms")

    println("### Two")

    val before2 = System.currentTimeMillis()
    Tokenizer.builder().build()
      .tokenize(text)
      .iterator().toIterator
      .filter(t => t.getPartOfSpeech.contains("名詞"))
      .toTraversable.par.groupBy(t => t.getSurfaceForm).foreach(t => println(t._1 + ": " + t._2.size + " -> " + t._2.head.getAllFeatures))
    println("Time: " + (System.currentTimeMillis() - before2) + "ms")

  }
}
 run
[info] Running Main 
### One
好き: 1 -> 名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキ
の: 2 -> 名詞,非自立,一般,*,*,*,の,ノ,ノ
事: 4 -> 名詞,非自立,一般,*,*,*,事,コト,コト
笑顔: 1 -> 名詞,一般,*,*,*,*,笑顔,エガオ,エガオ
部屋: 1 -> 名詞,一般,*,*,*,*,部屋,ヘヤ,ヘヤ
星: 2 -> 名詞,一般,*,*,*,*,星,ホシ,ホシ
ーー: 1 -> 名詞,一般,*,*,*,*,*
僕ら: 1 -> 名詞,代名詞,一般,*,*,*,僕ら,ボクラ,ボクラ
翼: 3 -> 名詞,一般,*,*,*,*,翼,ツバサ,ツバサ
毎日: 1 -> 名詞,副詞可能,*,*,*,*,毎日,マイニチ,マイニチ
秘密: 6 -> 名詞,一般,*,*,*,*,秘密,ヒミツ,ヒミツ
ドア: 1 -> 名詞,一般,*,*,*,*,ドア,ドア,ドア
!: 7 -> 名詞,サ変接続,*,*,*,*,*
扉: 2 -> 名詞,一般,*,*,*,*,扉,トビラ,トビラ
こと: 1 -> 名詞,非自立,一般,*,*,*,こと,コト,コト
ゆ: 6 -> 名詞,一般,*,*,*,*,ゆ,ユ,ユ
誰: 1 -> 名詞,代名詞,一般,*,*,*,誰,ダレ,ダレ
Knock: 10 -> 名詞,固有名詞,組織,*,*,*,*
なか: 1 -> 名詞,非自立,副詞可能,*,*,*,なか,ナカ,ナカ
ここ: 2 -> 名詞,代名詞,一般,*,*,*,ここ,ココ,ココ
ゆかり: 2 -> 名詞,一般,*,*,*,*,ゆかり,ユカリ,ユカリ
-: 5 -> 名詞,サ変接続,*,*,*,*,*
嫌: 1 -> 名詞,形容動詞語幹,*,*,*,*,嫌,イヤ,イヤ
時: 10 -> 名詞,非自立,副詞可能,*,*,*,時,トキ,トキ
私: 2 -> 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
もの: 1 -> 名詞,非自立,一般,*,*,*,もの,モノ,モノ
距離: 1 -> 名詞,一般,*,*,*,*,距離,キョリ,キョリ
向こう: 1 -> 名詞,一般,*,*,*,*,向こう,ムコウ,ムコー
夢: 1 -> 名詞,一般,*,*,*,*,夢,ユメ,ユメ
一緒: 1 -> 名詞,サ変接続,*,*,*,*,一緒,イッショ,イッショ
月: 2 -> 名詞,一般,*,*,*,*,月,ツキ,ツキ
それ: 1 -> 名詞,代名詞,一般,*,*,*,それ,ソレ,ソレ
?: 1 -> 名詞,サ変接続,*,*,*,*,*
側: 1 -> 名詞,接尾,一般,*,*,*,側,ガワ,ガワ
ー: 8 -> 名詞,一般,*,*,*,*,*
君: 8 -> 名詞,接尾,人名,*,*,*,君,クン,クン
ふたり: 1 -> 名詞,一般,*,*,*,*,ふたり,フタリ,フタリ
Time: 407ms
### Two
ここ: 2 -> 名詞,代名詞,一般,*,*,*,ここ,ココ,ココ
Knock: 10 -> 名詞,固有名詞,組織,*,*,*,*
月: 2 -> 名詞,一般,*,*,*,*,月,ツキ,ツキ
一緒: 1 -> 名詞,サ変接続,*,*,*,*,一緒,イッショ,イッショ
夢: 1 -> 名詞,一般,*,*,*,*,夢,ユメ,ユメ
向こう: 1 -> 名詞,一般,*,*,*,*,向こう,ムコウ,ムコー
ゆかり: 2 -> 名詞,一般,*,*,*,*,ゆかり,ユカリ,ユカリ
距離: 1 -> 名詞,一般,*,*,*,*,距離,キョリ,キョリ
もの: 1 -> 名詞,非自立,一般,*,*,*,もの,モノ,モノ
時: 10 -> 名詞,非自立,副詞可能,*,*,*,時,トキ,トキ
嫌: 1 -> 名詞,形容動詞語幹,*,*,*,*,嫌,イヤ,イヤ
側: 1 -> 名詞,接尾,一般,*,*,*,側,ガワ,ガワ
-: 5 -> 名詞,サ変接続,*,*,*,*,*
それ: 1 -> 名詞,代名詞,一般,*,*,*,それ,ソレ,ソレ
ー: 8 -> 名詞,一般,*,*,*,*,*
君: 8 -> 名詞,接尾,人名,*,*,*,君,クン,クン
翼: 3 -> 名詞,一般,*,*,*,*,翼,ツバサ,ツバサ
星: 2 -> 名詞,一般,*,*,*,*,星,ホシ,ホシ
ーー: 1 -> 名詞,一般,*,*,*,*,*
僕ら: 1 -> 名詞,代名詞,一般,*,*,*,僕ら,ボクラ,ボクラ
笑顔: 1 -> 名詞,一般,*,*,*,*,笑顔,エガオ,エガオ
部屋: 1 -> 名詞,一般,*,*,*,*,部屋,ヘヤ,ヘヤ
事: 4 -> 名詞,非自立,一般,*,*,*,事,コト,コト
好き: 1 -> 名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキ
の: 2 -> 名詞,非自立,一般,*,*,*,の,ノ,ノ
こと: 1 -> 名詞,非自立,一般,*,*,*,こと,コト,コト
扉: 2 -> 名詞,一般,*,*,*,*,扉,トビラ,トビラ
ドア: 1 -> 名詞,一般,*,*,*,*,ドア,ドア,ドア
!: 7 -> 名詞,サ変接続,*,*,*,*,*
誰: 1 -> 名詞,代名詞,一般,*,*,*,誰,ダレ,ダレ
ふたり: 1 -> 名詞,一般,*,*,*,*,ふたり,フタリ,フタリ
なか: 1 -> 名詞,非自立,副詞可能,*,*,*,なか,ナカ,ナカ
ゆ: 6 -> 名詞,一般,*,*,*,*,ゆ,ユ,ユ
毎日: 1 -> 名詞,副詞可能,*,*,*,*,毎日,マイニチ,マイニチ
秘密: 6 -> 名詞,一般,*,*,*,*,秘密,ヒミツ,ヒミツ
?: 1 -> 名詞,サ変接続,*,*,*,*,*
私: 2 -> 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
Time: 23ms
[success] Total time: 1 s, completed 2014/03/30 2:02:45
.toTraversable.par.

ここだけの違いなのに速度に大分違いが出るなーっていう

並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング

並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング