|
Site |
Cours VB.net |
|
|
|
Comparaison VB6 VB.Net. |
|
|
Page mise à jour le 06/02/2008.
VB.NET est t-il rapide?
Comment VB.NET 2003 est situé en comparaison avec les autres langages de programmation?
Le
site OsNews.com publie les résultats d'un petit benchmark comparant les
performances d'exécution sous Windows de plusieurs langage de programmation en
2003 avec VB 2003.
Les langages .NET - et donc le code managé en général - n'ont pas à rougir devant
Java, pas plus que face au langage C compilé grâce à GCC. Voici un aperçu des
résultats chiffrés (valeurs les plus faibles = les meilleures performances) :
int long double trig I/O TOTAL Visual C++ 9.6 18.8 6.4 3.5 10.5 48.8 Visual C# 9.7 23.9 17.7 4.1 9.9 65.3 gcc C 9.8 28.8 9.5 14.9 10.0 73.0 Visual Basic 9.8 23.7 17.7 4.1 30.7 85.9 Visual J# 9.6 23.9 17.5 4.2 35.1 90.4 Java 1.3.1 14.5 29.6 19.0 22.1 12.3 97.6 Java 1.4.2 9.3 20.2 6.5 57.1 10.1 103.1 Python/Psyco 29.7 615.4 100.4 13.1 10.5 769.1 Python 322.4 891.9 405.7 47.1 11.9 1679.0
- Nine Language Performance Round-up: Benchmarking Math & File I/O [OsNews.com]
Article publier sur www.DotNet-fr.org
VB.NET(2003
, 2005, 2008) est-il plus rapide que VB6?
A- En mode Design, pour écrire un programme, l'IDE VB 2008 est beaucoup plus rapide que VB 2005.

B- En cours d'exécution.
Exemple No1
Sur une même machine P4 2.4 G faisons tourner un même programme: 2 boucles imbriquées contenant une multiplication, l'addition à un sinus et l'affichage dans un label:
En VB6
Private Sub Command1_Click()
Dim i As Long
Dim j As Long
Dim k As Long
For i = 0 To 100
For j = 0 To 1000
Label1.Caption = Str(k * 2 + Sin(4)): Label1.Refresh
k = k + 1
Next
Next
End Sub
9 secondes dans l'IDE , 7 secondes avec un exécutable après compilation.
Imports
System.Math Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim j As Integer Dim k As Integer For i = 0 To 100 For j = 0 To 1000Label5.Text = (k * 2 + Sin(4)).ToString : Label5.Refresh()
k = k + 1
Next Next End Sub35 secondes dans l'IDE, 25 secondes avec un exécutable après compilation.
En utilisant des 'Integer' ou des 'Long', il y a peu de différence.
En Vb.Net 2005
Même code:
55 secondes dans l'IDE, 45 secondes avec un exécutable après compilation.
Dur, dur!!!.
On rappelle que ce qui fait tourner le Framework c'est le CLR (Commnon Language RunTime); depuis la version 2 du Framework, c'est toujours la version 2.0.50727: toujours la même.
La vitesse d'exécution des programmes est identique en VB2005 et VB 2008.
Sur mon ordinateur, depuis que j'ai ajouté VB 2008 Express (VB6 et VB 2005 Express étaient installés) , et alors que VB 6 tourne toujours aussi vite, VB 2005 et 2008 tourne beaucoup plus lentement temps d'exécution x 3!!). Explication?
Exemple No2
Sur une même machine P4 2.4 G faisons tourner un même programme: On crée un tableau de 10000 String dans lequel on met des chiffres Puis on trie le tableau.
Private Sub Command1_Click()
Dim i As Integer
Dim A(10000) As String
Dim j As Integer
Dim N As Integer
Dim Temp As String
N = 9999
'remplir le tableau
For i = 9999 To 0 Step -1
A(i) = Str(9999-i)
Next i
'trier
For i = 0 To N - 1
For j = 0 To N - i - 1
If A(j) > A(j + 1) Then
Temp = A(j):
A(j) = A(j + 1): A(j + 1) = Temp
End If
Next j
Next i
End Sub
35 secondes
Dim i As Integer
Dim A(10000) As String
Dim j As Integer, iMax
As Integer
Dim N As Integer
Dim Temp As String
'remplir
le tableau
N = 9999
For i = 9999 To 0 Step -1
A(i) = Str(9999 - i)
Next
'trier
For i = 0 To 9997
iMax = 0
For j = i + 1 To 9999
If A(i) > A(j) Then iMax
= j
Next
If A(i) < A(iMax)
Then
Temp = A(j)
A(j) = A(i)
A(j) = Temp
End If
Next
Private
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As IntegerDim A(10000) As String
For i = 9999 To 0 Step -1
A(i) = (9999 - i).ToString
Next i
Array.Sort(A)
Label1.Text = "ok"
End Sub
< 1 seconde
En Vb.Net 2005 beta2
Même code:
< 1 seconde
Moins d'une seconde avec VB.NET, 35 secondes en VB6.
La méthode 'Sort' est hyper plus rapide que la routine de tri.
(Pour être honnête, il faut dire que mon test n'est pas rigoureux car le tri VB.NET est probablement un tri 'rapide' alors qu'en VB6 la routine basic n'est pas optimisée, je ne compare donc pas les mêmes routines.)
En conclusion:
La couche du Framework semble ralentir considérablement la vitesse du code.
Mais, en VB.net, il faut raisonner différemment et utiliser judicieusement les classes et les méthodes au lieu de taper de longues routines.
Cela fait que en VB.Net:
Le code est plus court et compact (moins de temps de développement)
Le code est plus rapide.
|
|
|
|
|