Exceptions und Performance



  • Wie teuer ist eigentlich das Abfangen von Exceptions? Sollte man das eher seltener weiter außen machen oder ist das egal, wenns öfters vorkommt?



  • AusnahmeCoder schrieb:

    Wie teuer ist eigentlich das Abfangen von Exceptions? Sollte man das eher seltener weiter außen machen oder ist das egal, wenns öfters vorkommt?

    wenns vorkommt, kommts halt vor. solange exceptions ausnahmen sind und ausnahmsweise fliegen (was sie sein sollten), isses egal.

    wenns nicht vorkommt, ist catch enorm schnell.

    template<typename Iterator>
    inline void defaultConstruct(Iterator begin,Iterator end){
    	Iterator i=begin;
    	try{
    		while(i!=end){
    			defaultConstruct(&*i);
    			++i;
    		}
    	}
    	catch(...){
    		destruct(begin,i);
    		throw;
    	}
    }
    

    dieser code ist meinen messungen nach schneller, als die alternative, ein lokales objekt zu nehmen, in dessen destruktor das destruct(begin,i) aufgerufen wird.



  • Hallo,

    Exceptions verändern die Dinge.

    Sie machen Programme größer.

    Exceptions sind aber auch nötig um einen soliden Ablauf des Programmes zu gewährleisten.

    Man muss entscheiden können, wann und ob man Exceptions nutzt. Nur wenn ich einmal in einem Programm diese nutze, dann benutz ich sie meist im gesammten Code. Es oft schwer mit Exceptions zu arbeiten, aber wie gesagt: um einen soliden Ablauf zu gewährleisten sind diese [oft] nötig.

    Grobe Unterschiede: Zwischen 5 bis 10 % Performance/Größe.

    MFG winexec*



  • winexec* schrieb:

    Grobe Unterschiede: Zwischen 5 bis 10 % Performance/Größe.

    wobei man fairerweise vergleichen sollte mit einem ebenso rubusten c-programm.


Log in to reply