Operując na folderach, które tworzone były na listach w SharePoint stanąłem przed wyborem metody do ich pobierania. Miałem dostępne: GetItemById i GetFolder. Nie byłem w stanie ocenić, która jest lepsza więc przeprowadziłem testy. O rezultatach i wnioskach można przeczytać w tym poście.
Aby przetestować obie metody napisałem prostego webparta, którego zadaniem było odpytywanie listy o foldery (zapytanie wykonywane było tyle razy ile było folderów na liście). W jednym zdarzeniu wykonywane było pobieranie obiektów SPFolder obiema metodami:
- GetItemById()
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
foreach (KeyValuePair<int, string> item in listFolder)
{
SPList listTemp = SPContext.Current.Web.Lists["Foldery"];
SPFolder folder = listTemp.GetItemById(item.Key).Folder;
}
stopwatch.Stop();
lTime1.Text = string.Format("Metoda GetItemById: {0}", stopwatch.ElapsedTicks.ToString());
- GetFolder()
Stopwatch stopwatch1 = new Stopwatch();
stopwatch1.Start();
foreach (KeyValuePair<int, string> item in listFolder)
{
string documentPath = libraryPath + "/" + item.Value;
SPFolder folder = SPContext.Current.Web.GetFolder(documentPath);
}
stopwatch1.Stop();
lTime2.Text = string.Format("Metoda GetFolder: {0}", stopwatch1.ElapsedTicks.ToString());
W przypadku pierwszej metody GetItemById sprawdziłem też jak zachowa się gdy wyciągnę tworzenie listy przed blok foreach. Kod po modyfikacji wyglądał następująco:
SPList listTemp = SPContext.Current.Web.Lists["Foldery"];
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
foreach (KeyValuePair<int, string> item in listFolder)
{
SPFolder folder = listTemp.GetItemById(item.Key).Folder;
}
stopwatch.Stop();
lTime1.Text = string.Format("Metoda GetItemById: {0}", stopwatch.ElapsedTicks.ToString());
Poniżej została zamieszczona tabelka z czasami podanymi w Ticks i wykresy wydajności tych dwóch metod.
Wyniki same mówią za siebie - wybrałem GetFolder. Zaskakujące może być to, że tworzenie obiektu SPList przed blokiem foreach przyniosło bardzo małą poprawę wydajności (wykres 2).
Dodany:
2009-10-04 17:07:58 przez
Michał Nikołajuk |
Wypowiedzi: 0