[WPF] Comparatif des performances entre WPF et WindowsForms
J’entend souvent les gens se plaindre des problèmes de performances de WPF: ce fût même l’occasion d’un “débat” entre développeurs, il n’y a pas si longtemps
,qui craignaient d’être obligé d’avoir des machines de développement surpuissantes, pour pouvoir utiliser Visual Studio 10 (qui, je le rapelle, est développé en WPF).
A titre personnel, je n’ai jamasi eu à me plaindre des performances de WPF mais, pour tenter de convaincre les gens, je me suis laissé tenté à faire des petits tests de comparaison de performance, entre WPF et WindowsForms.
Les tests que j’ai effectué (qui ne sont pas exhaustifs et parfaits) sont les suivants:
- Remplissage de 10 000 objets dans une ComboBox
- Remplissage de 10 000 objets dans une ListView
- Remplissage de 10 000 objets dans un Treeview
- Tri des 10 000 objets qui sont dans la ListView
Pour certains scénarios, il y a plusieurs cas possibles:
- Utilisation de la virtualisation
- Tri personnalisé
- Etc.
Pour que les résultats ne soient pas faussés parce qu’ils sont joués sur ma machine de développement, j’ai lancé le tests sur 2 autres machines, qui sont sans doute plus proche des machines “classiques” que celle dont je dispose:
- Machine 1:
- OS: Windows XP SP3 32 Bit
- Processeur: 1Ghz
- RAM: 512 Mo
- Machine 2 (machine de développement):
- OS: Windows Vista SP1 32 Bit
- Processeur: Dual Core 2 Duo T7400 @ 2.16 GHz
- RAM: 4Go
- Machine 3
- OS: Windows XP SP3 32 Bit
- Processeur: Pentium 4 @ 2.4 GHz
- RAM: 1Go
Comme vous pouvez le constater, les machines sont plutôt diverses ce qui permet d’espérer des résultats intéressants 
Disclamer: Avant de livrer les résultats, je me permet de rajouter ceci: Le code que j’ai mis en place pour ces tests ne comporte aucunes optimisations particulières. Il doit-être tout à fait possible de l’optimiser mais dans ce cas, il serait nécessaire d’optimiser les 2 versions (WPF et WindowsForms), pour que le test soit équitable 
Maintenant que cet avertissement est mis en place, passons aux résultats: tous les temps sont exprimés en secondes.
Machine 1:
Machine 2:
Machine 3:
Que peut-on conclure de ces réultats ?
Les performances des applications WPF sont supérieures à celles des applications WinForms, hormis pour le contrôle ListView (avec le Virtual Mode d'activé) où les performances des applications WinForms sont d’environ 50% supérieures.
En ce qui concerne le tri, le constat est le même à la différence prêt que l’optimation, pour la version WindowsForms (et mode virtuel activé), permet des performances qui sont légèrement supérieures (pas assez d'ailleurs pour que cela ait un véritable impact).
Conclusions
D’une manière générale, les applications WPF sont plus performantes que les applications WindowsForms. Seul le contrôle ListView semble dérogé à ce constat mais la différence est sans doute suffisament infime pour qu’elle soit ignorée.
Vous avez la possibilité de vous faire votre propre avis, en téléchargeant la solution (qui contient également le fichier de résultat): http://morpheus.developpez.com/wpf/tools/PerfBench.zip
En espérant que cela serve à montrer que WPF, c’est pas si lent que cela peut le paraitre 
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :