Löschen des letzten Elementes aus einem Vector schlägt fehl!!
-
Helium schrieb:
und Btens schneller ist als IF und IF ELSE
Quatsch.
Bist Du dir da so verdammt sicher? Ich habs mal durchgecheackt:
#include <iostream> #include <windows.h> #include <mmsystem.h> #pragma comment(lib, "Winmm.lib") const __int32 Loop= 2000000000; DWORD SplitTime( void ) { static DWORD dwTime= 0; DWORD dwNewTime= timeGetTime(); DWORD dwRet= dwNewTime - dwTime; dwTime = dwNewTime; return dwRet; } void testIF_ELSE( void ) { int Res= 1; for (__int32 Count= 0; Count < Loop; ++Count) { if (Res == 0) ; else if (Res == 1) ; else ; } } void testSWITCH( void ) { int Res = 1; for (__int32 Count= 0; Count < Loop; ++Count) { switch (Res) { case 0: break; case 1: break; default : break; } } } int main(int argc, char* argv[]) { std::cout << "Loops: " << Loop << std::endl << std::endl; SplitTime(); testIF_ELSE(); std::cout << "testIF_ELSE: " << SplitTime() << "ms" << std::endl; SplitTime(); testSWITCH(); std::cout << "testSWITCH: " << SplitTime() << "ms" << std::endl; int x; std::cin >> x; return 0; }
Ergebnis:
6312 ms für IF/ELSE
5890 ms für Switch!Fazit: Bei 2000000000 abfragen liegt switch ganz klar vorne!!!!
Also nix Quatsch, testen und dann erst Quatsch sagen
-
Ist Optimierung an? Wundert mich, dass da überhaupt was ausgeführt wird...
-
operator void schrieb:
Ist Optimierung an? Wundert mich, dass da überhaupt was ausgeführt wird...
Wieso? unter .NET funzt das prima und dem DJGPP
-
MSVC 6.0 Release-Modus:
testIF_ELSE: 0ms
testSWITCH: 0msUnd das sollte eigentlich jeder Compiler liefern. Zumindest, wenn er nicht im Debug-Modus und mit eingeschalteten Optimierungen arbeitet.
-
oh das wusste ich net, naja streicht einfach mal 1-2 nullen vom int weg