VB/DELPHI/C++ QUEL EST LE MEILLEUR?

cs_zac Messages postés 21 Date d'inscription dimanche 9 juin 2002 Statut Membre Dernière intervention 16 septembre 2003 - 5 févr. 2003 à 22:00
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 15 août 2008 à 18:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10375-vb-delphi-c-quel-est-le-meilleur

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 août 2008 à 18:54
moi tu as les resultats dans mes deux posts ^^
enfin le secret c'est de pas recalculer ce qui n'as pas a l'etre et de ne tester que les nombre impairs
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 août 2008 à 17:17
(je mets tous mes messages par 2 aujourd'hui ... :s)

rappel : l'exemple VB6 fourni par zac était bien 10000 itérations, et non 10000 résultats... (pour ma défense ^^)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 août 2008 à 17:15
ok en effet j'avais mal lu
alors jusqu'à 10000 résultats, toujours avec la fonction MOD (rappel, très très gourmande), sans affichage, dans une fenêtre (donc AVEC interface), sur 1.8ghz

VB.NET2008 : 14 secondes et 937 ms
VB6 : 12 secondes et 781 ms

ce en 104723 itérations
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 août 2008 à 16:32
pour les nombre de 0 a 10 000 pour etre comparable ^^

(daedric@daedric-laptop ~) cc -O3 test.c -lm
(daedric@daedric-laptop ~) time ./a.out

real 0m0.006s
user 0m0.004s
sys 0m0.000s
(daedric@daedric-laptop ~)
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 août 2008 à 16:19
desole pas pu resister:
cc -O3 test.c -lm
(daedric@daedric-laptop ~) time ./a.out

real 0m0.037s
user 0m0.036s
sys 0m0.000s

#include <math.h>

static inline int is_prime(int nb)
{
register int max;
register int i;

i = 1;
max = sqrt(nb) + 1;
while (i++ < max)
if (nb % i == 0)
return (0);
return (1);
}

int main(void)
{
register int i;
register int tot = 0;

tot = 1;
i = 3;
for (i = 3; tot < 10001; i += 2)
{
if (is_prime(i))
++tot;
}
}
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 août 2008 à 16:16
PCPT c pas les nombre de 0 a 10 000 qu'il faut c'est les 10 000 premiers nombre premiers donc faut aller bcp plus loins ^^
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 août 2008 à 14:05
grr, décidément...
9.399...E-02 "S" (pas MS) évidémment, donc moins d'un dixième de seconde,
toujours de 0 à 10 000
++
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 août 2008 à 14:02
pour info, le même code (ou pas loin) en dotnet, met également 17ms. testé en compilé sous VS2008 sur un PC plus puissant que l'autre test.

je refais donc : sous VB6 sur le même PC nous sommes maintenant à 9.399...E-02 ms

dans des conditions à peu près équivalentes, VB6 semble donc 2 fois plus rapide que VB.NET

(nb : temps pris en vb.net avec System.Diagnostics.Stopwatch)
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
15 août 2008 à 09:21
Je n'utilise pas VB.NET, et je n'ai jamais utilisé VB.NET 2008, je ne peux donc pas savoir en comparant VB.NET 2008 à VB6, mais 30 fois supérieur, ca me semble énorme... Déjà un facteur 2 est énorme pour un algorithme identique avec un code optimisé pour les deux langages comparés...

Cela m'étonnerai fortement que VB.NET 2008 soit plus rapide que du C++ : C++ est un langage très vieux, et surtout, pensé pour les performances, tout comme le C. Il est compilé en natif, ce qui veut dire qu'il sais parlé directement au système, contrairement à .NET qui lui est interprété, et passe donc par une surcouche pour accéder au système. Cela a un avantage : le code peut être optimisé en temps réel, avec la mise en cache d'instructions souvent exécutées par exemple, ce qui n'est pas possible en compilé natif (moteur JIT). Par contre, il a l'énorme inconvénient d'être interprêté, et donc, le pc doit d'abord traduire les instructions de code avant de pouvoir les exécuter, ce qui lui donne du travail supplémentaire, contrairement à C++. .NET est censé apporter la portabilité au programme, mais malgré les quelques projet à ce propos, on peut dire que c'est un échec !

Je parle bien de C++ et non de Visual C++ (et encore moins de C++.NET !!!) qui n'est qu'un outil, et n'a rien à voir avec le programme final !

Perso, j'ai fait mon choix : au lieu d'utiliser VB.NET, qui aurait été logique après l'utilisation de VB6, je me suis tourné vers JAVA qui est un langage bien plus pérenne que ceux made by Microsoft qui changent toute les 3 versions (de là à dire que .NET 3 serait la dernière version avant une nouvelle révolution... en tout cas ca me ferais bien marré de voir tout ce qui ne jure que par C# ou VB.NET, et crachent sur JAVA), avec tout ce que ca engendre (incompatibilités et recodage complet des applications...).
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
15 août 2008 à 09:02
Bonjour à tous,

LOL, Darksidious... Je pensais exactement la même chose sur l'optimisation du code, qui n'est pas faite... EN effet, une comparaison devrait effectivement utiliser le même algorithme (et interface), mais aussi être optimisé en fonction de chaque language.

Néanmoins, je me posais exactement la question que soulève Zac... J'ai comparé VB6 avec VB2008, où j'ai obtenu que VB2008 était environ 30 fois plus rapide que VB6... Je me pose la question de savoir si Visual C++ serait encore plus rapide que VB2008, ou bien est-ce que VB2008 est au même niveau que Visual C++. (mais je ne sais pas encore suffissament programmer en C++, pour faire ma propre idée). En effet, J'ai lu que le VB.NET était totalement revu en profondeur (sauf pour les compatibilité avec VB6...)

Pour le language PCPT++ ... hum... serait-il dangereux pour le PC ?... En effet, comme je l'ai déjà dit... PT = pété ! ... et si en plus il y a deux plus... misère.

Amicalement,
Us.

PS : Merci PCPT, pour ce lien qui tombe effectivement à point !
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
15 août 2008 à 08:19
VB 11 fois plus lent que delphi... ca laisse songeur en effet, mais quand on voit le code, on n'a plus aucun doute :p

Hormis quelques cas d'utilisation particuliers, VB n'a pas a rougir face au C (je ne parle pas du Delphi que je ne connais pas). VB une fois compilé (et non exécuté en mode debug !), et le code un tant soit peu optimisé (ne pas déclarer les variables dans ton code, c'est vraiment très très limite ! faire plusieurs Resume Next qui servent à rien, faire un doEvents).

Ca ne sert à rien de tester la rapidité des différents langages si tu ne les connais pas à fond...

D'ailleurs, ton commentaire m'a bien fait rire :
DoEvents 'sécurité pour pas faire planter votre pc (tu m'étonne que c'est lent toi après !)

LOL

Conclusion : rien ne vaut le langage PCPT++

DarK Sidious
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 août 2008 à 20:13
ps : j'ai déclaré aiRes en string uniquement pour pouvoir utiliser Join, çà revient plus ou moins à ce que disait Cirec : le fait d'afficher (contrôles) les résultats.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 août 2008 à 20:10
VB hors concours? attention Cirec j't'ai vu hein ^^

ces comparatifs sont ABSURDES !!!

comparer des temps entre langages avec du code SALE? je ne comprends pas ce que çà apporte

je n'ai regardé que la partie VB6
en conservant la fonction MOD qui est très lourde, je me suis permis de modifier le code

TEMPS AVEC CODE COMPILé :

-----------------------------
TON CODE
-----------------------------
Private Sub Command1_Click()

stopé = False

On Error Resume Next

nb = 0
t = Timer
Text2.Text = ""
On Error Resume Next
For i = Str(Text3.Text) To Str(Text1.Text)
prem = TrueIf i 2 Then prem False

For j = 2 To i - 1
If i Mod j 0 Then prem False

Next j
If prem True Then Text2.Text Text2.Text + Str(i) + ";": nb = nb + 1

DoEvents 'sécurité pour pas faire planter votre pc
On Error Resume Next
If stopé = True Then Exit For
Next i

Label1.Caption = Timer - t
Label6.Caption = nb

End Sub

-----------------------------
SCORES
-----------------------------

Plage : 1 à 10 000
Temps : 42.04688 sec
Trouvés : 1229

-----------------------------
CODE MODIFIé
-----------------------------

Dim aiRes() As String

Private Sub Command1_Click()
Dim t As Double, i As Integer, j As Integer

stopé = False
nb = 0
ReDim aiRes(Val(Text1.Text))
Text2.Text = vbNullString
t = Timer

For i = Val(Text3.Text) To Val(Text1.Text)
prem = True
If i = 2 Then
prem = False
Else
For j = 2 To i - 1 If (i Mod j) 0 Then prem False: Exit For
Next j
End If
If prem Then aiRes(nb) i: nb nb + 1
If stopé Then Exit For
Next i

Label1.Caption = Timer - t
ReDim Preserve aiRes(nb - 1)
Text2.Text = Join(aiRes, ";")
Erase aiRes
Label6.Caption = nb
End Sub

-----------------------------
SCORES
-----------------------------

Plage : 1 à 10 000
Temps : 0.171000.... sec
Trouvés : 1229

ah bah tiens, on passe à 1/5 seconde?!!!

est-ce qu'on doit en déduire que VB6 est 5 fois plus rapide que C ?
bien sûr que non, faut coder plus propre :)
Utilisateur anonyme
12 août 2008 à 19:12
Le sujet est déjà vieux "2003" mais comme une mise à jour est intervenue au 06/07/2008 je me permet quand même de te donner mon point de vue!

Tu dis que le C est 6 fois plus rapide que Delphi (dans ce cas de figure) mais ta comparaison est totalement faussée ...

En effet tu compares une application Delphi "VCL ... Visual Component Library" (avec composants boutons etc.) à une application C console ... dans ce cas il est évident que la première soit plus lente ^^

Donc si tu veux comparer les deux (VB étant hors concours ... désolé ^^) tu dois faire une application console (pour Delphi) et là ça m'étonnerai que l'écart soit toujours aussi grand. :)

Et plus d'un programmeur aguérit en C a été surpris par les performances du compilateur Delphi et du coup le regarde avec un tout autre oeil ^^
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
10 nov. 2003 à 12:38
Même si l'algo est le même ça ne suffit pas à comparer la vitesse d'execution de plusieurs langages. En effet certaines façons de faire sont + ou - bien optimisées selon les langages. Par exemple en VB l'appel à une fonction est très très lent, et on a tout intérêt à en utiliser un minimum (sauf pour la compréhension et la réutilisabilité de code).

De plus certains langages sont optimisés pour certains types de fonctins. Par exemple CamL est optimisé pour les fonctions récursives.

Ceci étant dit je pense que tous ces langages se valent dans une grande majorité de cas. En effet dans la plupart des dév que j'ai eu à faire jusqu'ici même VB était suffisament rapide. Ce n'est pour des gros calculs que le C est indispensable.

Voila, c'était ma contribution perso au débat!
cs_Athanor Messages postés 20 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 8 avril 2004
21 févr. 2003 à 23:18
l'affaire du Public, c'était une blague ;)
cs_Dalamar Messages postés 63 Date d'inscription samedi 22 décembre 2001 Statut Membre Dernière intervention 22 décembre 2003
7 févr. 2003 à 23:16
Vb-> +plaisant?
Ça dépend pour qui. Je trouve que Delphi est énormément plus plaisant que vb grâce à ses composants, rapidité et autre possibilités. En plus, ce language est plus accessible pour les programmeurs du type "loisir" car Delphi6 Édition Personnelle est gratuite sur le sîte de Borland. Vb lui, est très cher...
cs_zac Messages postés 21 Date d'inscription dimanche 9 juin 2002 Statut Membre Dernière intervention 16 septembre 2003
6 févr. 2003 à 16:55
exact, mai c corrigé!
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
6 févr. 2003 à 11:00
Athanor: "public" est en bleu car c'est un mot-clé du C++ au cas ou tu l'ignorerais.
cs_Athanor Messages postés 20 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 8 avril 2004
6 févr. 2003 à 02:19
t'a écrit: Delphi: 6ms
Je crois plus que tu voulais dire seconde que miliseconde
j'aime le public en bleu...
cs_zac Messages postés 21 Date d'inscription dimanche 9 juin 2002 Statut Membre Dernière intervention 16 septembre 2003
5 févr. 2003 à 22:00
si y'a pas encore de zip, dsl ça vient demain...
Rejoignez-nous