Le protocole de test

  • J'ai créé un site dans lequel j'ai ajouté une liste générique contenant 4 colonnes : Title (1 seule ligne de texte), LinkedValue (Lookup lié à une liste contenant 3 valeurs), Choice (Colonne type choix à 3 valeurs), et LongText (Multiple ligne de texte).
  • J'ai ensuite créé une application console qui m'a permis d'ajouter des éléments hétérogènes dans la liste (nombre aléatoire pour la valeur liée, le choix, et caractères aléatoires pour le texte long).
  • Enfin j'ai testé dans l'interface de SharePoint l'affichage d'une page contenant plus ou moins d'éléments, dans une liste contenant elle aussi plus ou moins d'éléments :p

Note : les temps affichés ne sont pas à la seconde près c'est l'ordre de grandeur qui importe ici.

Note 2 : J'ai testé sur une liste mais à priori les résultats sur les Bibliothèque de documents devraient être les mêmes (des amateurs pour le test ?)

Les résultats

Nb E Tot = Nombre d'éléments total dans la liste
Nb E Page = Nombre d'éléments affichés dans la page
Temps = Temps moyen d'affichage de la page

Nb E Tot Nb E Page Temps

100

100

< 1s

200

100

< 1s

500

100

< 1s

500

500

< 2 s

1000

100

1s

1000

1000

4s

2000

100

1s

2000

1000

4s

2000

2000

8/9 s

3000

100

1s

3000

1000

5s

3000

2000

8/9 s

Nb E Tot Nb E Page Temps

10000

100

1s

10000

1000

5s

10000

2000

8/9 s

10000

4000

16/17s

10000

10000*

52s

50000

100

1s

50000

2000

8/9 s

50000

10000*

52s

50000

20000**

106s

50000

50000***

> 250s****

* : Sur mon IE 7 une fois les résultats affichés l'interface a mis quelques secondes à répondre aux clics.
** : Sur mon IE 7 l'interface est devenue très lente, plusieurs secondes entre 1 clic et le déclenchement de l'action
*** : sur mon IE 7 l'interface est carrément devenue inutilisable, plusieurs dizaines de secondes pour sortir de la page, les autres IE répondaient normalement.
|-> Tout ces comportements sont sûrement dû au JavaScript dans la page...
**** : J'ai arrêté le chrono le temps n'étant de toute façon plus acceptable depuis longtemps.


Mon analyse

On voit clairement que peu importe le nombre d'éléments dans la liste si le nombre d'éléments dans la page reste faible (< 500) les performances sont bonnes. Par contre plus on augmente le nombre d'éléments dans la page et plus on voit un temps de chargement conséquent. Ce qui est tout à fait normal car il faut plus de temps pour générer le code, pour l'envoyer au navigateur, et à celui-ci pour interpréter le code.

A noter que ces temps ne le montrent pas, mais durant l'affichage le CPU est à 100% ! Sauf pour les affichages de moins de 2 secondes où il oscille entre 30% et 60% mais pendant un pic de quelques millisecondes seulement. Ceci signifie que des affichages de plusieurs secondes sur une liste pourraient facilement mettre un serveur à genoux s'ils sont déclenchés par plusieurs utilisateurs sur différentes listes en même temps !

Résultat : si vous suspecter une utilisation importante de votre (ou vos) sites SharePoint, gardez des temps inférieurs à 1 seconde pour les pages de vues.

Bon alors ?

Cette limite des 2000 éléments n'est à priori pas valable pour les utilisateurs finaux, car on voit déjà clairement des limites à partir de plus de 500 éléments par page. Par contre elle concerne bien les développeurs qui devront en tenir compte pour leurs applications.

Mon conseil est donc le suivant :

Bon code à tous !