|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 93 ![]() |
Bonjour à tous,
On m'a dit que le C++ était très rapide, plus rapide que le VB.NET ![]() Alors, j'ai fais deux teste, pour comparer la rapidité des deux langages. VB.NET : Code :
Code :
Savez-vous pourquoi ça c'est passé ainsi ? |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Joel LamotteDéveloppeur de jeux vidéo Inscription : août 2004 Messages : 1 552 ![]() |
1. Comment as-tu mesurer?
2. Est-ce que tu as compile en configuration "Debug"? Si oui ca n'a aucun sens de tester les performances dans ce mode. Il faut le faire dans la configuration finale, en "Release" par defaut sous VS. 3. Remplace endl par '\n'. Sauf si tu feux flusher la console a chaque output, ce que VB ne fait certainement pas. 4. Au passage, pour ce genre de code, VB.Net devrait avoir des performances similaires (mais certainement en defaveur de .Net). C'est plutot avec des manipulations complexes et lourdes que tu vas voir une reelle difference. Essaie avec quelque chose de plus realiste? |
|
10
|
|
|
#3 | ||||
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 93 ![]() |
Merci pour ta réponse
![]() Citation:
Citation:
Citation:
Citation:
Une fois que j'aurai compris, j'essayerai surement d'autre chose. Par contre, j'ai remarqué que l'application C++ prenait seullement 620K de mémoire, alors que le programme en VB.NET en prend 2816K ! Comment augmenter la mémoire du programme C++ pour le faire accélérer ? |
||||
|
|
01
|
|
|
#4 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 543 ![]() |
La vitesse d'exécution n'a strictement rien à voir avec la mémoire allouée pendant son exécution.
Par ailleurs ta méthode de "calcul" de la vitesse d'exécution me semble... Bancale pour ne pas dire ridicule et naze. Vue la simplicité du code, la différence sera probablement inférieure à la seconde, et je doute très grandement que tu aies une telle précision. |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 93 ![]() |
OK ok
Bref, j’abandonne ce test. Tu n'aurai pas une idée de programme qui montrerai vraiment la différence entre les deux langages ? |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
un bete produit scalaire de deux tableaux de N > 10^6 elements de type double
|
|
00
|
|
|
#7 | |
|
Membre à l'essai
![]() Inscription : août 2011 Messages : 93 ![]() |
Citation:
![]() Mais j'ai rien compris |
|
|
|
00
|
|
|
#8 | |||
|
Membre habitué
![]() Inscription : mars 2010 Messages : 114 ![]() |
Définition du produit scalaire:
Citation:
Code :
|
|||
|
|
00
|
|
|
#9 | |
|
Membre éprouvé
![]() Étudiant Inscription : février 2012 Messages : 206 ![]() |
Citation:
std::array vit dans la pile (il n'y a pas pas d'allocation dynamique). La taille de la pile est bien plus limitée que celle du tas. Si tu remplaces ton std::array par un std::vector ça devrait fonctionner. |
|
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Inscription : mars 2010 Messages : 114 ![]() |
il semblerait que tu aies raison Ehonn, cela semble cohérent car je tourne sur une distrib Ubuntu 64bits, en tapant la commande ulimit -a j'ai comme info que ma stack size = 8192kbytes, autrement dit ma stack ne peut contenir que (approximativement) 8 192 000 / sizeof(int) = 8 192 000 / 4 = 2 048 000 int, ce qui semblait être (approximativement) la limite de mon array.
Ainsi le code a été édité en utilisant cette fois ci un vector. |
|
|
00
|
|
|
#11 | |||
|
Membre du Club
![]() Inscription : juin 2008 Messages : 120 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#12 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 543 ![]() |
|
|
|
00
|
|
|
#13 | |
|
Membre du Club
![]() Inscription : juin 2008 Messages : 120 ![]() |
Citation:
J'aurais plutôt fait une implémentation avec des choses très basiques, pour être sûr de pouvoir le faire dans les deux langages. |
|
|
|
01
|
|
|
#14 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 543 ![]() |
Utiliser un vector, array ou "tableau classique" ne change strictement rien quant à l'utilisation des données. Il s'agit de données contiguës en mémoire et cest tout ce qui importe. On ne parle pas de la création de ces données.
De même que algorithm ne fournit rien de particulier, écrire une boucle for et faire un appel à la méthode utilisée par le foncteur ne change rien au traitement des données. |
|
|
00
|
|
|
#15 | |
|
Expert Confirmé
![]() ![]() Joel LamotteDéveloppeur de jeux vidéo Inscription : août 2004 Messages : 1 552 ![]() |
Citation:
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com