2013-03-19 22 views
1

我想添加特殊情況以提高任意 Akka序列化模塊的性能,即允許更快地序列化Array[Double]或用戶包裝的任何基元類型。有沒有一個規範的方式來允許每個類型的自定義序列化?將特殊情況注入Akka序列化模塊

我的想法是增加一個特徵CanSerialize[T],它定義了方法serialize(o:T):Array[Byte]deserialize(bytes:Array[Byte]):T。有沒有一種方法可以實現這樣的功能,而不會像模式匹配那樣失去Akka的好處?

編輯 我也可以得到滿意KRYO否則快於Java的序列化的東西,但似乎並沒有成爲KRYO和阿卡2.1預先包裝的jar文件。

回答

2

您可以爲特定類型註冊您自己的序列化程序。

akka.actor { 
    serialization-bindings { 
    "[D" = doubleBytes 
    } 

    serializers { 
    doubleBytes = "a.b.YourDoubleArraySerializer" 
    } 
} 

注意[DArray[Double]類名。

http://doc.akka.io/docs/akka/2.1.2/scala/serialization.html

+0

您能否詳細說明「[D」?我不明白這是Array [Double]? – Felix 2013-03-19 11:22:30

+0

scala> Array [Double](2).getClass.getName res1:String = [D – 2013-03-20 09:32:00

+0

Yuck,但是謝謝:D – Felix 2013-03-20 09:37:36