注:個人的な検証の結果です。
検証環境
Intel Core i7 S860(2.53GHz)DDR3 4GB
Windows7 Ultimate
Java 6.0 update 18
Oracle Coherence 3.6.1
検証パターン
指定した数のデータをキャッシュへ連続でput/getする。データの個数:100個、1,000個、10,000個、100,000個、1,000,000個
それぞれの個数で3回実行しその平均値を用いました。
結果
SerializerよりもPofSerializerの方が高速という結果になりました。また、Serializerではgetとputの実行時間に差はほとんど見られませんが、PofSerializerではgetの方が常に高速です。
そのためPofSerializerとSerializerの実行時間比ではgetの方が高い効果が見られます。
なぜか10,000個のケースが一番差が開きませんでした。
このグラフからは読み取れませんが、3回実行しても実行時間はほとんど変わりませんでした。
実行時間
PofSerializerとSerializerの実行時間比
ソース
PofSerializerとEntityはこちら参照PofSerializerを使ってみた
package com.chirokings;PofSerializer利用のVM引数
import java.math.BigDecimal;
import com.chirokings.entity.Employee;
import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedCache;
public class TestSerializer2 {
private static int SIZE = 100;
public static void main(String[] args) {
NamedCache cache = CacheFactory.getCache(Employee.class.getName());
System.out.println(System.currentTimeMillis());
Employee emp1 = null;
for( int i=0 ; i < SIZE ; i++ ){
emp1 = new Employee();
emp1.companyId = "OR";
emp1.employeId = new BigDecimal(1);
emp1.age = new BigDecimal(27);
emp1.name = "abc";
cache.put(new Integer(i), emp1);
}
System.out.println(System.currentTimeMillis());
Employee emp2 = null;
for( int i=0 ; i < SIZE ; i++ ){
emp2 = (Employee)cache.get(new Integer(i));
}
System.out.println(System.currentTimeMillis());
}
}
-Dtangosol.coherence.cacheconfig=serializerCache1.xml -Xms2048M -Xmx2048M -Dtangosol.coherence.localhost=127.0.0.1 -Dtangosol.coherence.ttl=0 -Dtangosol.pof.enabled=true -Dtangosol.pof.config=my-pof-config.xmlSerializer利用のVM引数
-Dtangosol.coherence.cacheconfig=serializerCache1.xml -Xms2048M -Xmx2048M -Dtangosol.coherence.localhost=127.0.0.1 -Dtangosol.coherence.ttl=0