andere möglichkeiten anstatt if/else anweisungen?



  • hallo

    gibt es eine effizientere lösung 100 variablen einer klasse zu überprüfen als der reihe nach mit x if/else anweisungen? ich lerne immer gerne dazu, kenne aber derzeit nur dieses verfahren um variablen logisch zu überprüfen



  • xantora schrieb:

    [...]100 variablen einer klasse[...]

    😮

    Wie kommt es denn zu soetwas?



  • Wenn du tatsächlich 100 Werte speichern willst, dann mach Arrays und geh diese der Reihe nach (mit Schleifen) durch. Für jeden Datentyp nimmst du ein eigenes Array.



  • was ist so schlimm daran wenn eine klasse ca. 100 variablen managet?
    Nexus: ich verstehe: du meinst damit also das man mit nur einer if anweisung das ganze inetwa so lösen könnte?:

    for(int i = 0; i < LENGTH; i++)
    	{
    		for(int j = 0; j < DynamicStringsArray; j++)
    		{
    			if(DynamicObjectArray[i]->DynamicStringsArray[j] != "")
    			{
    				some_variable = ArrayWithStrings[j]->value;
    			}
    		}
    	}
    

    DynamicArray ist ein dynamisches array welches mehrfach instanzen einer klasse bewahrt. DynamicStringsArray wäre ein dynamisches array welches instanziierte klassen mit variablen vom typ string beinhaltet die al value deklariert sind.

    spricht etwas dagegen wenn man viele if/else blöcke für mein vorhaben einsetzt? büsst das performance ein? ist es schlechter programmier stil?



  • xantora schrieb:

    spricht etwas dagegen wenn man viele if/else blöcke für mein vorhaben einsetzt? büsst das performance ein? ist es schlechter programmier stil?

    Mal anders gefragt: was spricht dafür? Wie kommst du auf die Idee, hunderte Zeilen mit if/else-Blöcken zu füllen, wenn das gleiche mit einer Schleife in ein paar Zeilen erledigt ist?



  • in anderen worten: keine performance einbusse, sondern nur unnötige code zeilen?



  • Dürfte performancetechnisch keinen großen Unterschied machen... bei der Schleife hat man noch einen kleinen Overhead, jedoch dürfte es günstig sein, wenn sich der ganze Schleifencode im CPU-Cache befindet (aber da sind andere gefragt, die sich mehr damit auskennen).
    In manchen Fällen hast du mit Schleifen auch einen Vorteil bei modernen Compilern, welche dir SSE-Code erzeugen können. Aber wenn du mit Strings arbeitest, wird das nicht möglich sein.



  • xantora schrieb:

    in anderen worten: keine performance einbusse, sondern nur unnötige code zeilen?

    Ja. Wobei nicht nur der benötigte Platz ein Problem ist, sondern auch die Übersichtlichkeit und vor allem die Wartbarkeit.

    Du solltest dir, gerade bei solchen Mikro-Codeteilen wie if/else-Abfragen jedoch keine Gedanken um Performance machen, da das kaum etwas ausmacht und Ersetzungen wahrscheinlich im Nanosekundenbereich spürbar sind. Was viel höhere Priorität hat, ist sauberer Code. Bei wirklich zeitkritischen Anwendungen kann immer noch auf Mikrooptimierungen abgezielt werden.



  • okay vielen dank euch allen 🙂



  • xantora schrieb:

    in anderen worten: keine performance einbusse, sondern nur unnötige code zeilen?

    Richtig hätte es geheißen:

    xantora schrieb:

    in anderen worten: nur keine performance einbusse, dafür aber unnötige code zeilen?

    Da die meiste Zeit bei Dir wahrscheinlich mit Programmieren (inkl. Fehlersuche) draufgeht und nicht mit dem Programmlauf, steht das "nur" an der falschen Stelle.

    😉

    Gruß,

    Simon2.


Log in to reply