2012-03-01 11 views
2

すべてのページの読み込み時にデータベースから自分のオブジェクトを逆シリアル化し、次のボタンを押すと再びデータベースに直列化する必要があります。私はページをロード/保存する最速の方法を知りたい。 大きなオブジェクトを3〜4個の小さなオブジェクトに分割し、3〜4回シリアル化/逆シリアル化する必要があります。このようにして、データベース3-4の時間と話し合い、XMLSerializer 3-4時間を初期化します。 他の方法は、完全なオブジェクトをシリアライズ/デシリアライズすることです。これは、単一のデータベースヒットとXMLSerializerの単一の初期化を持ちます。しかし、XMLストリーム(シリアル化されたデータ)は大きくなります。 どのオプションが最速になりますか?ラージオブジェクトシングルタイムのシリアライズ/デシリアライズVs小さなオブジェクトのシリアライズ/デシリアライズ複数回?

+3

各メソッドを実行するためのテストプログラムを作成してみませんか? – ChrisF

+1

このデータは何ですか?アプリケーション状態の何らかの形ですか? –

+1

正直言って、あなたの最大の問題は帯域幅です。だから、私はXmlSerializer(protobuf-netのようなもっと簡潔なもの)を使っていないだろうし、b:私はこの特定の*データをSQLデータベースに保存しないだろう - 私はそれを何らかの種類キー/値ストアの、redisなど –

答えて

0

完全なオブジェクトを非同期モデルでシリアライズ/デシリアライズすると便利です。

非同期モデル:あなたの最大のパフォーマンスのボトルネックになり、データベースを呼び出し、ほとんどのケースでhttp://msdn.microsoft.com/en-us/magazine/cc164128.aspx#S4

0

。あなたが投稿したものよりも詳細なことを知らなくても、私は単一の大きなオブジェクトを使うことに傾いています。 3〜4件の小さなリクエストを並列化できれば、よりうまくいくかもしれませんが、それはより複雑でスケーリングの問題をより早く引き起こす可能性が高くなります。より良い答えであなたを指している可能性があります

フォローアップの質問:

  • 各オブジェクトがどのくらいありますか?
  • このコードに対して同時に要求するユーザーは何人ですか?
  • メモリ、データベース接続などの容量に制限はありますか?
関連する問題