Salut,
Je viens de faire un test de rapidité sur les DLL très surprennent ( en C++ )
Voici la fonction contenue dans ma DLL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 extern "C" __declspec(dllexport) void testDLL() { for (int i = 0; i<1000000 ; i++) for (int y = 0; y < 2000 ; y++); printf("fin\n"); }
J’inclus ensuite cette fonction et mesure le temps d’exécution comme ceci :
J’obtiens un temps de 5100 ms.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 extern "C" __declspec (dllimport) void testDLL (); int main() { DWORD a = GetTickCount(); testDLL(); printf("temps = %d\n",GetTickCount()-a); system("PAUSE"); }
Je fait ensuite le même programme sans utiliser de DLL comme ceci :
cette foi si j’obtiens un temps de 2000 ms.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void testsansDLL() { for (int i = 0; i<1000000 ; i++) for (int y = 0; y < 2000 ; y++); printf("fin\n"); } int main(int argc, char *argv[]) { DWORD a = GetTickCount(); testsansDLL(); printf("temps = %d\n",GetTickCount()-a); system("PAUSE"); return EXIT_SUCCESS; }
Avec ce petit teste très simple, je trouve que l’exécution d’une fonction par DLL est plus de 2 foie plus lente que l’appelle d’une fonction directement dans le programme.
Je trouve ce chiffre extrêmement gros surtout que la plus par des logicielle dont la rapidité est primordial utilise des DLL comme les moteur 3d par exemple...
Cela est t’il normal ou mon teste est foireux ?
Partager