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

最終更新日: 2009年10月7日

適用対象: SharePoint Foundation 2010

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

次の例では、インデクサーが使用されるたびに 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 クラスには、単一アイテムの取得に使用できる GetFileGetFolder、および GetListItem のメソッドが用意されています。

関連項目

概念

SharePoint 開発タスク - トピック集

リストのオブジェクトとコレクションを操作する