コード パフォーマンスを最適化する
最終更新日: 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 クラスには、単一アイテムの取得に使用できる GetFile、GetFolder、および GetListItem のメソッドが用意されています。