次の方法で共有


コード パフォーマンスを最適化する

データベースに対して余分なクエリが必要になったり、正確でないコードが含まれたりすることがあるので、コード内で不要なオブジェクトの作成や破壊を行わないようにします。

次の例では、インデクサが使用されるたびに Tasks list のオブジェクトを個別にインスタンス化して、プロパティを設定し、更新用のメソッドが呼び出す必要があります。この方法は推奨されません。

例 : (非推奨)

Dim myWeb As SPWeb = SPContext.Current.Web

myWeb.Lists("Tasks").Title = "List_Title"
myWeb.Lists("Tasks").Description = "List_Description"
myWeb.Lists("Tasks").Update()
SPWeb myWeb = SPContext.Current.Web;

myWeb.Lists["Tasks"].Title = "List_Title";
myWeb.Lists["Tasks"].Description = "List_Description";
myWeb.Lists["Tasks"].Update();

次の例では、プロパティを設定してメソッドを呼び出すために、Tasks list オブジェクトを 1 度だけインスタンス化して myList 変数に割り当てます。

例 : (推奨)

Dim myWeb As SPWeb = SPContext.Current.Web

Dim myList As SPList = myWeb.Lists("Tasks")

myList.Title="List_Title"
myList.Description="List_Description"
myList.Update()
SPWeb myWeb = SPContext.Current.Web;

SPList myList = myWeb.Lists["Tasks"];

myList.Title="List_Title";
myList.Description="List_Description";
myList.Update();

上記の例では、Microsoft.SharePoint 名前空間の using ディレクティブ (Visual Basic の場合は Imports) が必要になります。

Microsoft.SharePoint アセンブリのオブジェクト モデルによりパフォーマンスが最適化され、作成される SQL クエリの数が最小化されます。ただし、コード パフォーマンスを監視するために、SQL Server プロファイラを使用することをお勧めします。

コレクションから単一アイテムを取得するには、Get* メソッドが親オブジェクトから提供されている場合は、コレクション全体を反復処理してインデクサを使用する代わりに、常に Get* メソッドを使用します。たとえば、SPWeb クラスには、単一アイテムの取得に使用できる GetFile()GetFolder()、および GetListItem() のメソッドが用意されています。

See Also

概念

Windows SharePoint Services に関するトピック集

Working with List Objects and Collections (英語)