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: 0ms

    Und 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 😃


Anmelden zum Antworten