boursicotteur
Messages postés201Date d'inscriptionmercredi 25 septembre 2002StatutMembreDernière intervention10 novembre 2007
-
10 oct. 2007 à 17:59
boursicotteur
Messages postés201Date d'inscriptionmercredi 25 septembre 2002StatutMembreDernière intervention10 novembre 2007
-
11 oct. 2007 à 20:43
Ceci est pour BruNews et fait suite au topic MinMax maintenant bloqué.
Voila, j'ai réussi à faire une première DLL en C++.
Résultat des tests (mêmes conditions que ta DLL)
Ta DLL: 329 mSec
Ma DLL avec ton algo: 334 mSec
Ma DLL avec mon algo: 343 mSec
Je conclus de ceci que ton algo fonctionne à la même vitesse dans les 2 DLL et que la boucle "for" n'est pas gourmande (mais rend le code plus facile à comprendre).
Une différence majeure par contre est la taille de la DLL obtenue.
28K pour ma DLL versus 3K pour ta DLL.
Mon compilateur est probablement mal ajusté...
En terminant, je tiens à te remercier (sincèrement) car sans cette "prise de bec" je n'aurais pas été autant motivé à me mettre au C++. Je réalise maintenant que VB est meilleur que C++ sur certains points et vice versa. Je vais donc utiliser VB et C++ conjointement.
// Fonction bnGetInt16MinMax (mon algo)
short __stdcall bnGetInt16MinMax(short *ptab, DWORD n, short *pMin)
{ short val, min 0, max 0;
if(!n) goto Exit; //sort si n=0
min max *ptab; //retourne 1ère val
if(!(n-1)) goto Exit; //sort si n=1
for(;n-1;--n) //n >= 2
{
val = *(++ptab); //retourne val suivante
if(val < min)
{
min = val;
continue;
}
if(val > max) max = val;
}
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 11 oct. 2007 à 08:36
Ravi de voir que nos conseils ont porté leur fruits, tu semble t'en être bien tiré. Concernant le poids des dll, BruNews est apssé maitre en la matière il y a des années... suppression du cadre standard et autres truchements en tout genre ^^
ravi de voir que tu as eu la maturité de prender sur toi, de remonter tes manches et de revenir nous faire part de tes résultats.
concernant les languages, le C permet d'acceder rapidement et facilement à la mémoire, a utiliser pour les calculs important, dans les boucles cruciales. Le VB, lui, apporte le coté interface conviviale et rapide à réaliser... rien de plus
boursicotteur
Messages postés201Date d'inscriptionmercredi 25 septembre 2002StatutMembreDernière intervention10 novembre 2007 11 oct. 2007 à 20:43
Je sais qu'il sait mais...mon âme est trop "zen"...
Kapitch?
De toute façon, ce que j'ai besoin est la vitesse; la grosseur je m'en fout...
Pour mes manches, elles ont fondues avec le travail...
Pas évident de faire une DLL en C++ sans rien connaître...mais c'est faisable et pas mortel. J'ai appris le VB de la même façon en utilisant la source MSD de fredlynx pour télécharger des (tu sais quoi) sur MySpace. Belle époque!
Le langage de C++ est en soit assez rapide à apprendre mais l'environnement de la DLL, la façon d'exporter, de se débarrasser des décoration (et de les trouver), de régler le compilateur, etc...c'est une autre histoire. C'est là que la source m'aurait été très utile!
Tu as raison pour les points forts de VB et C++.
J'entends continuer en VB et me faire des DLL en C++ (quand possible) pour l'accès mémoire et les longs calculs.
Sans vouloir devenir un pro, je vais tout de même appronfondir le C++ pour être capable d'écrire de petites applications sans plus.
J'ai amélioré la fonction!
Elle est maintenant plus lisible et aussi plus rapide...321 mSec
Et voilà pour le pro! :)
================
short __stdcall bnGetInt16MinMax(short *ptab, DWORD n, short *pMin)
{ short val, min 0, max 0;
if(!n) goto Exit; //sort si n=0
min max *ptab; //retourne 1ère val
if(!(n-1)) goto Exit; //sort si n=1
for(;n-1;--n) //n >= 2
{
val = *(++ptab); //retourne val suivante
if(val < min)
min = val;
else if(val > max)
max = val;
}