Errori, bug, domande - pagina 2873

 


Caricamento EX5 fallito
 

Errore critico durante l'esecuzione

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

Risultato: caricamento EX5 fallito

 
A100:

L'allineamento delle strutture influisce sulla velocità di esecuzione?

 
fxsaber:

L'allineamento delle strutture influisce sulla velocità di esecuzione?

Lo fa in alcuni casi, ecco una citazione:"Nella maggior parte dei casi non è necessario preoccuparsi dell'allineamento perché l'allineamento predefinito è già ottimale.Ma in alcuni casi un significativo miglioramento delle prestazioni o un risparmio di memoria può essere ottenuto specificando un allineamento personalizzato per le strutture dati".

 
A100:

Lo fa in alcuni casi, ecco una citazione:"Nella maggior parte dei casi non è necessario preoccuparsi dell'allineamento perché l'allineamento predefinito è già ottimale.Tuttavia, in alcuni casi è possibile ottenere miglioramenti significativi delle prestazioni o risparmi di memoria specificando un allineamento personalizzato per le strutture dati".

Solo un esempio di questo.

 
fxsaber:

Almeno un esempio di questo.

Ho l'allineamento per necessità - citazione dalla documentazione:"L'allineamento dei campi della struttura può essere necessario quando si scambiano dati con librerie di terze parti (*.DLL), in cui tale allineamento è applicato".

Prova a misurare tutti i valori del pacchetto e confronta la velocità

 
A100:

Prova a giocare con tutti i valori del pacchetto e confronta le velocità.

Dobbiamo decidere quale codice misurare.

Se ho capito bene, l'allineamento delle classi non è previsto. Cioè è abbastanza possibile che quando si lavora con un array di oggetti di classe (non puntatori), può essere ragionevole sostituire i campi di classe con una struttura allineata.

Comunque, non sono in tema.

 
fxsaber:

Se ho capito bene, l'allineamento delle classi non è previsto. Cioè è possibile che quando si lavora con un array di oggetti di classe (non puntatori), può essere ragionevole sostituire i campi di classe con una struttura allineata.

Ora ho provato le classi di pacchetti - la dimensione cambia

 

Una domanda sull'acquisto di una libreria (non un consulente) da Market.

Voglio usare la biblioteca nella mia ricerca. Di conseguenza, dovrebbe funzionare su qualsiasi conto e terminale.

È possibile per le biblioteche del mercato?

 
fxsaber:

Almeno un esempio di questo.

Dubito che molte persone usino l'ottimizzazione dei dati al giorno d'oggi, per lo più gli sviluppatori di giochi, ma anche lì tutti hanno i loro motori di gioco già pronti che sono già ottimizzati

cercato in giro, imho se ci sono raccomandazioni specifiche, cercherei quihttps://www.ibm.com/support/knowledgecenter/ru/

provato a cercare, ma non ha funzionato - ci sono molte varianti di query, qui è più vicino al soggettohttps://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/cache_tlbs.html

Ho cercato "structure pack" e "structure performance".



se controllate, deve essere una struttura pod e dovete scriverla il più distorta possibile, cioè prendete tutti i tipi di dati (long, int, short, char, double, float) e create 15 campi e mescolate i campi per tipi di dati, così potete allineare questi campi con la direttiva pack almeno sul confine della parola del computer

Potete anche provare a copiare le strutture, passarle come parametri alle funzioni e cambiare il contenuto dei campi


ma, imho, avrete una differenza palpabile se la dimensione totale di tali dati (array di strutture) è almeno un paio di megabyte per riempire il più possibile la cache del processore