begin process at 2012 05 27 21:15:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

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

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


 Information sur la source

Note :
Aucune note
Catégorie :Tutoriaux Classé sous :nombres, premiers, langages Niveau :Débutant Date de création :05/02/2003 Date de mise à jour :06/07/2008 01:44:29 Vu / téléchargé :8 106 / 247

Auteur : zac

Ecrire un message privé
Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note

 Description

Chaque fois que j'apprends un nouveau langage, j'essaie de faire un programme de recherche des nombres premiers.
J'applique chaque fois le même algorithme, c'est un assez bon entraînement pour débuter.
J'ai déjà fais ce programme en visual basic, en delphi, et maintenant, en c.
J'ai comparé le temps mis par le programme à chaque fois, voici les temps mis par chaque language de programmation pour trouver les 10 000 premiers nombres premiers:
vb : 68 secondes
delphi : 6 secondes
c: 1 seconde

Evidemment, le temps dépend de l'algorithme, mais comme cet algorithme est exactement le même pour les 3 programmes
(le fond du programme reste le même, malgrè quelques petites différences dues au passage d'un langage à un autre), ces temps
sont comparables. Et qu'est-ce qu'on voit??

Delphi est 11 fois + rapide que vb et c est 6 fois plus rapide que delphi et 68 fois plus rapide que vb!!!
C'est une énorme différence! Vous pouvez faire un petit test si vous programmez en c : faites un programme avec une
boucle qui écrit une phrase dans un fichier..en quelques secondes, le fichier aura dépasser les 100 Mo!! Encore une
preuve de la puissance du c.

Voilà mon avis sur ces 3 langages...

-> Si l'on veut programmer vite, sans "trop se casser la tête", ou pour le plaisir de programmer, il n'y a pas de
doute, il faut opter pour visual basic, sans doute le + "agréable".

-> Si l'on est un peu plus expérimenté, que l'on veut programmer quelque chose de rigoureux, avec une bonne gestion
des erreurs, si l'on veut faire un programme indépendants de toute dll et très rapide, autant opter pour c/c++/c#.
Surtout que si vous voulez vous attaquer au Java plus tard, il est indispensable de maitriser le C.

->Et delphi? Ses avantages sont qu'une même source peut être compilée pour linux ou pour windows (avec delphi ou kylix) et qu'il est le successeur du Pascal. Donc des personnes qui programment en Pascal
(ça existe encore??) peuvent facilement apprendre le Delphi. De plus, les programmes delphi sont indépendants, ils fonctionnent sans runtimes, et les programmes Delphi sont aussi plus rapide
que les programmes vb (sans être + rapide que les programmes c...).
Par contre, une des contraintes de Delphi, c'est sa syntaxe tellement différente!!
En programmant en Delphi, on prend des réflexes et l'habitude de formes syntaxiques qui n'existe qu'en Delphi.
Tous les programmeurs qui commencent le Delphi (sans avoir fait de Pascal auparavant) sont plus ou moins perdus et un temps d'adaptation s'impose! :(

Pour résumer, chaque langage à son public, ses avantages et ses inconvénients. C'est pourquoi il est intéressant d'en connaitre plusieurs
pour avoir le choix du langage le plus adapté au programme que l'on souhaite faire.
  



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

06 juillet 2008 01:44:29 :
Les anciennes description et conclusion faisaient référence à un site qui n'existe plus.

 Sources du même auteur

Source avec Zip ASCII ART!

 Sources de la même categorie

LISTER FICHIERS ET RÉPERTOIRES (MULTIPLATEFORME) par christophedlr
UTILISATION DES TYPELIST EN C++ par wyden
Source avec Zip Source avec une capture QCSSCOMPRESSOR par alphaone
AFFICHAGE D'UN TRIANGLE ISOCELE par nabche
Source avec Zip GESTION D'UNE BIBLOTHEQUE par leclerro19

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) LISTES DES NOMBRES PARFAITS INFERIEURES À N par Trezeguet
Source avec Zip FACTORISATION D'UN NOMBRE EN NOMBRE PREMIER par Tearsofdestiny
Source avec Zip CALCUL DE FACTORIELLES par pabbati
Source avec Zip Source avec une capture OBTENIR TOUTES LES NOMBRES PREMIERS DANS UNE GRANDE RANGÉE A... par elkasimi2007
RECHERCHE DES NOMBRES CHANCEUX SELON STANISLAW ULAM par Gueftones

Commentaires et avis

Commentaire de zac le 05/02/2003 22:00:49

si y'a pas encore de zip, dsl ça vient demain...

Commentaire de Athanor le 06/02/2003 02:19:17

t'a écrit: Delphi: 6ms
Je crois plus que tu voulais dire seconde que miliseconde
j'aime le public en bleu...

Commentaire de Kaid le 06/02/2003 11:00:47

Athanor: "public" est en bleu car c'est un mot-clé du C++ au cas ou tu l'ignorerais.

Commentaire de zac le 06/02/2003 16:55:07

exact, mai c corrigé!

Commentaire de Dalamar le 07/02/2003 23:16:00

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...

Commentaire de Athanor le 21/02/2003 23:18:27

l'affaire du Public, c'était une blague ;)

Commentaire de garslouche le 10/11/2003 12:38:14

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!

Commentaire de cirec le 12/08/2008 19:12:34 administrateur CS

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 ^^

Commentaire de PCPT le 12/08/2008 20:10:31 administrateur CS

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 = True
If 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 :)

Commentaire de PCPT le 12/08/2008 20:13:12 administrateur CS

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.

Commentaire de DARKSIDIOUS le 15/08/2008 08:19:09 administrateur CS

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

Commentaire de us_30 le 15/08/2008 09:02:24

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 !

Commentaire de DARKSIDIOUS le 15/08/2008 09:21:29 administrateur CS

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...).

Commentaire de PCPT le 15/08/2008 14:02:38 administrateur CS

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)

Commentaire de PCPT le 15/08/2008 14:05:02 administrateur CS

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
++

Commentaire de sheorogath le 15/08/2008 16:16:05 administrateur CS

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 ^^

Commentaire de sheorogath le 15/08/2008 16:19:15 administrateur CS

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;
    }
}

Commentaire de sheorogath le 15/08/2008 16:32:17 administrateur CS

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 ~)

Commentaire de PCPT le 15/08/2008 17:15:22 administrateur CS

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

Commentaire de PCPT le 15/08/2008 17:17:18 administrateur CS

(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 ^^)

Commentaire de sheorogath le 15/08/2008 18:54:42 administrateur CS

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Nombres premiers en C Urgent [ par maxfrancky ] il me faut réaliser un programme permettant de lister les n premier nombres premier n utilisnat une liste chainée de structure contenant le nombre pre Nombres premiers... corrigez moi svp =3 [ par nisso13 ] Salut, voila je m'explique, je voudrais faire un programme qui me liste les nombres premiers inferieurs à 1000... je l'ai fait mais il a une erreur qu programme nombres premiers [ par I0o0I ] Bonjour, j ai une question pour un programme plutot math mais la question est pas math du tout... c est surement très facile a résoudre. En gros j a convertir nombres en lettre [ par sofaranaya ] Bonsoir tout le monde! J'ai grand besoin d'une aide à propos d'un programme en c++. Voilà en ce moment je travaille sur un programme qui doit convert [BAR]Programation sous linux et windows, C ou C++ ??? [ par Ce.plusplus ] Bonsoir, Cela faisait des années que je voulais me mettre au C/C++ cette semaine, je me suis enfin motivé :) Seulement, je suis confronté à un probl Algorithme de groupage [ par MoknineMoknine ] Bonjour: je un tableau de nombre real. je veut un algorithme ou méthode pour regrouper ces nombres telque chaque groupe doit contenir les nombres qui Algorithme de Génération de Premiers en C++ [ par salimhaf ] Salut tout le monde, j'aimerais bien si vous m'aidez a propos d'algorithme de Génération de Premiers en C++, si quelqu'un le dispose ou vous avez que Utilisation DLL faite su VS c++ dans un projet vb.net 2008 [ par meilop ] Salut à tous, VS2008 j'ai crée une dll en vs C++ que j'essaie d'executer dans un projet vb.net mais au moment de l'execution de mon programme vb.net q très grand nombres en c++ [ par pop70 ] Bonjour, j'essaie actuellement de faire un petit programme de cryptage basé sur le principe du RSA, seulement pour cela il faut manipuler des très gra


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales