第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WCF綁定使用的序列化性能測試

WCF綁定使用的序列化性能測試

狐的傳說 2019-11-30 14:13:18
我有以下對象:public partial class Game{    public bool Finished { get; set; }    public Guid GameGUID { get; set; }    public long GameID { get; set; }    public bool GameSetup { get; set; }    public Nullable<int> MaximumCardsInDeck { get; set; }    public Player Player { get; set; }    public Player Player1 { get; set; }    public bool Player1Connected { get; set; }    public bool Player1EnvironmentSetup { get; set; }    public long Player1ID { get; set; }    public int Player1Won { get; set; }    public bool Player2Connected { get; set; }    public bool Player2EnvironmentSetup { get; set; }    public long Player2ID { get; set; }    public int Player2Won { get; set; }    public int Round { get; set; }    public Nullable<int> RoundsToWin { get; set; }    public bool Started { get; set; }    public string StateXML { get; set; }    public Nullable<DateTime> TimeEnded { get; set; }    public Nullable<int> TimeLimitPerTurn { get; set; }    public byte[] TimeStamp { get; set; }    public Nullable<DateTime> TimeStarted { get; set; }    }本課程將包含一些測試數(shù)據(jù)。我需要比較WCF服務(wù)的不同形式的綁定所使用的不同序列化程序的性能:basicHttpBinding => SoapFormatter(TextFormatter?)binaryBinding => BinaryFormatterXMLFormatter我需要詳細做的是:現(xiàn)在獲取要序列化的對象 的大小漿化后 達到現(xiàn)在的大小序列化的 時間時間反序列化我已經(jīng)嘗試過一些東西,但是我有點掙扎。也許已經(jīng)有一些用于這種測量的簡單代碼。
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經(jīng)驗 獲得超4個贊

我已經(jīng)修改了@Marc的基準(zhǔn)測試源代碼,并為ServiceStack的JSV和JSON序列化器添加了結(jié)果。這是我的3yo iMac上的結(jié)果:


BinaryFormatter

Length: 1313

Serialize: 3959

Deserialize: 3395


XmlSerializer

Length: 1049

Serialize: 1710

Deserialize: 2716


DataContractSerializer

Length: 911

Serialize: 712

Deserialize: 2117


NetDataContractSerializer

Length: 1138

Serialize: 1093

Deserialize: 4825


TypeSerializer

Length: 431

Serialize: 496

Deserialize: 887


JsonSerializer

Length: 507

Serialize: 558

Deserialize: 1213

這是我添加到上述@Marc基準(zhǔn)中的源代碼。


GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);

GC.WaitForPendingFinalizers();

var sbJsv = new StringBuilder(4096);

using (var sw = new StringWriter(sbJsv))

{

    Console.WriteLine();

    Console.WriteLine(typeof(TypeSerializer).Name);

    TypeSerializer.SerializeToWriter(orig, sw);

    var jsv = sbJsv.ToString();

    Console.WriteLine("Length: " + sbJsv.Length);

    TypeSerializer.DeserializeFromString<Game>(jsv);


    var watch = Stopwatch.StartNew();

    for (int i = 0; i < LOOP; i++)

    {

        sbJsv.Length = 0;

        TypeSerializer.SerializeToWriter(orig, sw);

    }

    watch.Stop();

    Console.WriteLine("Serialize: " + watch.ElapsedMilliseconds);


    watch = Stopwatch.StartNew();

    for (int i = 0; i < LOOP; i++)

    {

        TypeSerializer.DeserializeFromString<Game>(jsv);

    }

    watch.Stop();

    Console.WriteLine("Deserialize: " + watch.ElapsedMilliseconds);

}


GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);

GC.WaitForPendingFinalizers();

var sbJson = new StringBuilder(4096);

using (var sw = new StringWriter(sbJson))

{

    Console.WriteLine();

    Console.WriteLine(typeof(JsonSerializer).Name);

    JsonSerializer.SerializeToWriter(orig, sw);

    var json = sbJson.ToString();

    Console.WriteLine("Length: " + sbJson.Length);

    JsonSerializer.DeserializeFromString<Game>(json);


    var watch = Stopwatch.StartNew();

    for (int i = 0; i < LOOP; i++)

    {

        sbJson.Length = 0;

        JsonSerializer.SerializeToWriter(orig, sw);

    }

    watch.Stop();

    Console.WriteLine("Serialize: " + watch.ElapsedMilliseconds);


    watch = Stopwatch.StartNew();

    for (int i = 0; i < LOOP; i++)

    {

        JsonSerializer.DeserializeFromString<Game>(json);

    }

    watch.Stop();

    Console.WriteLine("Deserialize: " + watch.ElapsedMilliseconds);

}

注意:我無法獲得他使用的@Marc的protobuf-net v2 r352 dll,因此我不得不將protobuf-net基準(zhǔn)測試注釋掉。


查看完整回答
反對 回復(fù) 2019-11-30
  • 3 回答
  • 0 關(guān)注
  • 657 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號