基本的なテストでは、JavaScriptSerializerを使用してJSONにシリアライズすると、匿名型でも同じように見える非匿名型の2倍の時間がかかることがわかります。匿名型でシリアライズ(JavaScriptSerializer)が2倍かかる理由
サンプルコード:
namespace ConsoleTestApp
{
public class Program
{
protected class Sample
{
private static int count = 0;
public bool Alpha;
public int Beta;
public string Gamma = String.Format("count: {0}", count++);
}
public static void Main(string[] args)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
int count = 100000;
for (int i = 0; i < count; i++)
{
Sample sample = new Sample();
string result = serializer.Serialize(sample);
}
for (int i = 0; i < count; i++)
{
var anon = new { Alpha = true, Beta = 1, Gamma = String.Format("count: {0}", count) };
string anonResult = serializer.Serialize(anon);
}
}
}
}
結果、使用してVS2010でプロファイラに建て(プレミアム編):私は最初にこのことに気づいたとき、私はもちろん」思っ
なぜなら、それは匿名であり、シリアライザはそれを調べてシリアル化するものを知る必要があるからです。しかし、この腸の反応は、匿名型が静的にコンパイラに型付けされていることを一瞬考えた後は間違っているように見えました。したがって、シリアライザには、匿名型と同じくらい多くの情報があります。またはこれは間違っていますか? (または、上記のテストに欠陥がありますか?)
良い考え。しかし、同様の結果。 (非anonでは〜30%、匿名では〜65%) – Matt