Pracht und Armut der PLO - Seite 4

 
Integer:

... Die Annahme ist, dass es sehr schnell funktionieren sollte, weil es keine if- oder switch-Aufrufe gibt, die die Arbeitsweise des Programms verändern, sondern nur, wenn die gewünschte Klasse - der Nachkomme - während der Initialisierung ausgewählt wird, dann funktioniert alles unkompliziert und einfach.

...

MetaDriver:

...

In Sprachen mit "echten" Zeigern gibt es diesen Effekt nicht, dort verliert der Schalter, je größer die Auswahlliste ist.

...

Leute, raucht die Schalterdokumentation. Ein guter Schalter ist ein geschalteter Übergang, dessen Leistung nicht von der Anzahl der Wahlmöglichkeiten abhängt. 1 Wahl, 100 oder 1000 - die Übergangsgeschwindigkeit wird konstant sein.
Как работает оператор switch в Си/Си++ - CyberForum.ru - форум программистов и сисадминов
  • Evg
  • www.cyberforum.ru
ВНИМАНИЕ! Вопросы по существу обсуждаемого вопроса просьба задавать здесь или создать тему на форуме и кинуть на неё ссылку в блог или мне в личку. Причин для этого несколько. Я, как и любой другой автор, всегда могу упустить интересный момент обсуждаемой темы (что подтвердилось на практике). А потому задаваемый вопрос может закрывать...
 
Integer:
Warum muss ich die Kompilierungsmechanismen verstehen? Nur um zu glauben, dass ein schlechtes Ergebnis besser ist als ein gutes?

Das ist eine seltsame Aussage. Sie versuchen, Optimierungsprobleme auf Compiler-Ebene zu lösen, wissen aber nicht, wie der Compiler funktioniert.

 
C-4:
Leute, lest die Dokumentation des Schalters. Ein guter Schalter ist ein geschalteter Übergang, dessen Leistung nicht von der Anzahl der Wahlmöglichkeiten abhängt. 1 Wahl, 100 oder 1000 - die Übergangsgeschwindigkeit wird konstant sein.
Ja, wir haben einen Schalter mit direktem Tabellensprung, wenn es genügend Elemente wie in den Beispielen gibt.
 

Ich habe so gut wie keine Erfahrung mit der Programmierung und weiß, dass OOP eher der Bequemlichkeit als der Geschwindigkeit dient. Und es ist wahr - OOP ist eine praktische Sache, wenn man weiß, wie man sie einsetzt.

Auf der anderen Seite ist es für metaquotes besser, Zeit auf falsche Spreads im Tester zu verwenden. Es macht keinen Sinn, damit EAs zu schreiben, wenn man sie nicht ausreichend testen kann. Das meiste davon gilt für den Handel auf FORTS.

 
dimeon:

Ich habe so gut wie keine Erfahrung mit der Programmierung und weiß, dass OOP eher der Bequemlichkeit als der Geschwindigkeit dient. Und es ist wahr - OOP ist eine praktische Sache, wenn man weiß, wie man sie einsetzt.

Auf der anderen Seite ist es für metaquotes besser, Zeit auf falsche Spreads im Tester zu verwenden. Es macht keinen Sinn, damit EAs zu schreiben, wenn man sie nicht ausreichend testen kann. Dies betrifft vor allem den Handel auf FORTS.

Haben Sie schon irgendwo eine ausführliche Erklärung (Beweis) gegeben?

Hier ist es üblich, seine Behauptungen mit Beweisen zu untermauern, andernfalls wird man sie gar nicht erst zur Kenntnis nehmen. ;)

 

Und im Allgemeinen zeigt das Beispiel der Kopfzeile, dass es ein Inlining gibt. Ohne sie, im Debug-Modus, sind die Ergebnisse umgekehrt und OOP ist schneller:

Dieses Bild deutet an, dass die Kameraden in einem dunklen Raum nach einer schwarzen Katze suchen.

 
Renat:

...

Die virtuelle Methode hingegen kann nicht ausgeschaltet werden - sie wird immer aufgerufen. In einem Fall gibt es also nur eine Schleife, im anderen Fall gibt es einen Aufruf in der Schleife.

...

Übrigens: Sie können auch leere Schleifen löschen. Code:

void OnStart(){
   for(int i = 0; i < 1000000; i++)
      foo();
}

void foo(void){}

Kann auf ein einfaches reduziert werden:

void OnStart(){
   ;
}
 
Vinin:

Der Beweis wird von der anderen Seite kommen. Oder wieder nur Worte.

Im Großen und Ganzen bin ich nur an Fakten interessiert.

Ich weiß zwar schon, dass OOP langsamer ist, aber es bietet ganz konkrete Annehmlichkeiten

Am Montag werde ich anhand eines Beispiels für das Profiling eines echten OOP-Projekts zeigen, dass seine Leistung im Grenzfall zur Leistung der Systemfunktionsaufrufe tendiert.
 
C-4:

Das ist eine seltsame Aussage. Sie versuchen, Optimierungsprobleme auf Compiler-Ebene zu lösen, wissen aber nicht, wie das funktioniert.

Entschuldigung, da haben Sie etwas verwechselt, ich habe nicht versucht, den Compiler zu optimieren. Wenn Sie nicht verstehen, was ich getan habe, versuchen Sie, diesen Thread noch einmal von Anfang an zu lesen, aber sorgfältiger, und versuchen Sie auch, nicht geschickt vom Thema abzuweichen.
 
Renat:
Ja, wir haben einen Schalter mit einem direkten Sprung über die Tabelle, wenn es genügend Elemente gibt, wie in den Beispielen.

Die Beispiele in diesem Beispiel nehmen die einfachste Variante, bei der die Schlüsselwerte in einzelnen Inkrementen vorliegen, so dass der Versatz einfach berechnet wird. Aber wenn wir eine solche Variante haben:

case 10: ...

case 100: ... case 1000: ... case 1000000: ...

Hier wird der Index meines Wissens nach durch eine binäre Suche definiert. Haben Sie beide Methoden?