2010-12-07 9 views
1

私は基本的なDataContextを使ってオブジェクトを作成し、これらをオブジェクトとしてデータベースに送信しています。どのDataContextメソッドが高速になりますか?

速いが、どちらの方法がベストプラクティスと見なされているかを知るために、いくつかのテストを自分で書いたことがあります。

コードはループを反復し、データベースに保存されるオブジェクトをインスタンス化します。

1)は、次にオブジェクトのリストを作成し、最終用途

MyDataContext.InsertAllOnSubmit(ListOfObjects) 

2で、リストに作成された各オブジェクトを割り当てる)を使用してのDataContextに直接作成された各オブジェクトを割り当てますと、それは良いです

MyDataContext.InsertOnSubmit(Object) 

これは理にかなっています

おかげ

私は2番目のオプションのために推測

答えて

1

私は、送信イベントにパフォーマンスの影響があると考えています。これらのメソッドが呼び出されるとすぐにデータベース接続は開かれません。

各実装は送信時にデータベースを更新するだけなので、両方とも非常に似ています。 パフォーマンスの差はわずかです(オブジェクトをリストに入れたりリストを列挙するために何を処理してもそれに反します)ので、デザインに適したものを選んでください。

あなたは面白い時期尚早の最適化については、このページを見つけるかもしれない - ドナルド・クヌース - http://c2.com/cgi/wiki?PrematureOptimization

時期尚早の最適化は、 諸悪の根源です。

1

、あなたは、各操作のための接続を再オープンする必要があります。リストを使用するとよりクリーンでより良いオプションです。

+2

これらの方法のいずれもデータベースに触れません。メソッドは、Submitメソッドが呼び出されたときにサブミットされるリストに追加するだけなので、パフォーマンスがかなり似ています。 –

+0

私はまだ最初のオプションが良いと思います。パフォーマンスのためではなく、追跡可能性のためです。 – Pabuc

関連する問題