Fehler, Irrtümer, Fragen - Seite 2873

 


EX5-Laden fehlgeschlagen
 

Kritischer Fehler bei der Ausführung

struct pack(8) A {
typedef void (*fn)();
        fn f;
};
void OnStart() {}

Ergebnis: EX5-Laden fehlgeschlagen

 
A100:

Wirkt sich die Ausrichtung der Strukturen auf die Geschwindigkeit der Ausführung aus?

 
fxsaber:

Beeinflusst die Ausrichtung von Strukturen die Ausführungsgeschwindigkeit?

In einigen Fällen schon, hier ein Zitat:"In den meisten Fällen müssen Sie sich nicht um die Ausrichtung kümmern, da die Standardausrichtung bereits optimal ist. In einigen Fällen kann jedoch durch die Angabe einer benutzerdefinierten Ausrichtung für Datenstrukturen eine erhebliche Leistungssteigerung oder Speichereinsparung erzielt werden.

 
A100:

In einigen Fällen schon, hier ein Zitat:"In den meisten Fällen müssen Sie sich nicht um die Ausrichtung kümmern, da die Standardausrichtung bereits optimal ist. In einigen Fällen können Sie jedoch erhebliche Leistungsverbesserungen oder Speichereinsparungen erzielen, indem Sie eine benutzerdefinierte Ausrichtung für Datenstrukturen angeben.

Dies ist nur ein Beispiel dafür.

 
fxsaber:

Zumindest ein Beispiel dafür.

Ich habe die Ausrichtung aufgrund der Notwendigkeit - Zitat aus der Dokumentation:"Die Ausrichtung von Strukturfeldern kann erforderlich sein, wenn Daten mit Bibliotheken von Drittanbietern (*.DLL) ausgetauscht werden, in denen eine solche Ausrichtung angewendet wird".

Versuchen Sie, alle Packungswerte zu messen und die Geschwindigkeit zu vergleichen

 
A100:

Versuchen Sie, alle Packungswerte durchzuspielen und die Geschwindigkeiten zu vergleichen.

Wir müssen entscheiden, welchen Code wir messen wollen.

Wenn ich es richtig verstanden habe, ist eine Klassenausrichtung nicht vorgesehen. D.h. es ist durchaus möglich, dass es bei der Arbeit mit einem Array von Klassenobjekten (nicht Zeigern) sinnvoll sein kann, Klassenfelder durch eine ausgerichtete Struktur zu ersetzen.

Wie auch immer, ich bin nicht beim Thema.

 
fxsaber:

Wenn ich es richtig verstanden habe, ist eine Klassenausrichtung nicht vorgesehen. D.h. es ist möglich, dass bei der Arbeit mit einem Array von Klassenobjekten (nicht Zeigern), es sinnvoll sein kann, Klassenfelder durch eine ausgerichtete Struktur zu ersetzen.

Jetzt habe ich die Pack-Klassen ausprobiert - die Größe ändert sich

 

Eine Frage zum Kauf einer Bibliothek (nicht eines Beraters) von Market.

Ich möchte die Bibliothek für meine Recherchen nutzen. Dementsprechend sollte es auf allen Konten und Terminals funktionieren.

Ist dies für Marktbibliotheken möglich?

 
fxsaber:

Zumindest ein Beispiel dafür.

Ich bezweifle, dass heutzutage viele Leute die Datenoptimierung nutzen, höchstens Spieleentwickler, aber selbst dort hat jeder seine eigene fertige Spiele-Engine, die bereits optimiert ist

Ich habe mich umgesehen, aber wenn es irgendwelche speziellen Empfehlungen gibt, würde ich hier suchen:https://www.ibm.com/support/knowledgecenter/ru/

versucht zu suchen, aber es hat nicht funktioniert - es gibt viele Varianten von Abfragen, hier ist näher an das Themahttps://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/cache_tlbs.html

Ich habe nach "Strukturpaket" und "Strukturleistung" gesucht.



wenn Sie das überprüfen, muss es eine Pod-Struktur sein und Sie müssen sie so verzerrt wie möglich schreiben, d.h. Sie nehmen alle Datentypen (long, int, short, char,double,float) und erstellen 15 Felder und mischen die Felder nach Datentypen, so dass Sie diese Felder mit der Pack-Direktive zumindest an der Grenze des Computerwortes ausrichten können

Sie können auch versuchen, Strukturen zu kopieren, sie als Parameter an Funktionen zu übergeben und den Inhalt der Felder zu ändern


aber imho werden Sie einen spürbaren Unterschied haben, wenn die Gesamtgröße solcher Daten (Array von Strukturen) mindestens ein paar Megabyte beträgt, um den Prozessor-Cache so weit wie möglich zu füllen