*

[C#]BinaryFormatterでのDeserializeが遅い。遅すぎる。

公開日: : C#

概要

BinaryFormatterのサイズ的には大して変わらんとして、じゃあ速度的にはどうなのよ。
ということでBinaryFormatterとDataContractSerializerの計測。

結論としては、とある条件のときはBinaryFormatterは使っちゃいけないかもしれない。

実際にやってみる

ソリューションはこちら → Serializerの時間計測

とりあえず適当なクラスを10回ほどファイルにシリアライズ、デシリアライズを繰り返します。
適当なクラスはこんな感じ。

この適当なクラスを10回ほどシリアライズした結果はこんな感じ。

こうやって見ると、シリアライズはほとんど速度的には変わりませんが、デシリアライズについてはBinaryFormatterの圧勝ですね。
BinaryFormatter>DataContractSerializer>DataContractJsonSerializer という能力に見えます。

というわけでアセンブリ内で完結する(ソリューション内で完結する)クラスはBinaryFormatterで行うとよいようです。

と、締めくくって終わろうと思ってたんです。

もう一つテスト

クラスをこうするじゃろ。

すると結果はこうじゃ。

最初、全然帰ってこないので、例外でも吐いたのかと思いました。
Visual Studioを見ても、実行しているように見える。
しばらくほっといたらいつの間にか終わっていて、ログを見るとBinaryFormatterのデシリアライズ時間が大変なことに。

実は一つ一つ型を試していて、「stringも追加したし、次はクラスでも持たせるかー、めんどくさいからobjectでいいやー」なノリでやったらこんな結果に。

何が原因だろう。
クラスを適当に作って、それを配列にしてフィールドにしても同様だから、参照型がだめなんですかね。

ad

関連記事

Unity_

[Unity]Unity2Dでパズドラのようにタイルを動かす

今回からスクリプトがかなり難しくなってくるかも。 前回の続き。 というわけで前回はドラッグで

記事を読む

unity move

[Unity]コードリファレンス GameObjectを移動する。

移動します。 transformプロパティ GameObjectのtransformプロパテ

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 同じ色で繋がったパズルを消去する ソース解説

◆全文 using UnityEngine; using System.Collecti

記事を読む

logo

[C#]システム関連付けのソフトでファイルを起動する

事の発端 PDFをAdobeReaderで開きたいといわれました。 コマンドラインでAdobeR

記事を読む

cwbx.dll 参照の追加

[C#,AS400]C#でAS400のプログラムCallとコマンドの実行方法。

PCのプログラムからCall AS400のRPGPGMをPCから呼び出ししたいときがあります。

記事を読む

wannabenote_unity

[Unity]コードリファレンス ゲーム時間を表示する。

ゲーム内の時間を表示します。 Timeクラス 時間のためのクラスです。 ゲームが起動してか

記事を読む

logo

[C#, AS400]列挙体の文字列化&DB2/400にODBC接続

定数をなるべく書きたくないんです。 あとからメンテをするときに複数箇所変更しなくてはいけないから。

記事を読む

Excel vsto 印刷設定 print setting

[C#, VSTO]Excelの印刷設定をする

印刷設定 VSTO(Visual Studio Tool for Office)Excelなんぞを

記事を読む

logo

[C#]文字列のプロパティを初期化したい。空文字で初期化したい。

Twitterで適当に叫んでたときのネタをメモ。 C#でプロパティの初期化が面倒です。 たと

記事を読む

Wannabenote

[Unity]Unity2Dチュートリアル パズルを落下させる。

前回の続き。 とりあえず、パズルが消えたので、パズルを落としましょう。 以下のようにソースを

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑