*

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

公開日: : C#

概要

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

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

実際にやってみる

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

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

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

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

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

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

もう一つテスト

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

すると結果はこうじゃ。

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

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

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

ad

関連記事

VisualStudio_

[C#,Excel]visual studio tools for office(VSTO)を利用してExcelのAddInをC#で作る

いい加減VBAが嫌になってきたので、調べたらC#でExcelのアドインが作れるんですね。 というわ

記事を読む

logo

[Unity, C#]曲線を描こう エルミート曲線とベジエ曲線

演出を作る際に綺麗な曲線を描きたいですよね。 というわけでC#でエルミート曲線とベジエ曲線を計算す

記事を読む

NuGet visual studio

[C#]C#でPDFファイルを画像(System.Drawing.Image)にする

PDFを画像に PDFファイルを読み込んで、画像にする必要があったんです。 インターネットで調べ

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 画面上のGameObjectを左下から取得する

前回、画面上のオブジェクトを一括で手に入れる方法はわかりました。 しかし、これではどのオブジェクト

記事を読む

logo

[C#, Linq]foreach構文は書けるけど、Linqはよくわからなくて勉強する気がなくなった貴方に

Linq普及委員会エントリです。 いまさらすぎるわ! とか言わないで。 小難しい話はなしに、

記事を読む

logo

[C#]パスワード暗号化プログラムの初歩

パスワード暗号化の初歩的方法。 子供だましみたいなプログラムですね。 これは入社四か月の頃にプロ

記事を読む

logo

[C#]BinaryFormatterなどSerializerいろいろ書いておく

github始めました -> わなびのgithub それは置いておいて、BinaryForma

記事を読む

socket p2p unity

[Unity]Socket通信でP2Pすっぞ ホストへ接続

前回はホストが待ちうけするところまで作りました。 今回はクライアントがホストへ接続できるように

記事を読む

Unity_

[Unity]Unity4.6 UIチュートリアル Lesson6.UI Events and Event Triggers 日本語要約

前回の続き。 ついにずっと画面で見えていた謎のEventSystemに触れます。 なんか

記事を読む

logo

[C#]AS400のメンバーを指定してデータにアクセスする

◆前提条件◆ CliantAccessをインストールしている。 .NET Framework3.

記事を読む

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 ↑