Articles of ottimizzazione

Cosa manca / non è ottimale in questa implementazione di memcpy?

Mi sono interessato a scrivere una memcpy() come esercizio educativo. Non scriverò un intero trattato su ciò che ho fatto e non ho pensato, ma ecco l’implementazione di un ragazzo : __forceinline //因为通常Size已知,内联后编译器可以优化掉大部分无用代码void* myMemcpy(char* Dst, const char* Src, size_t Size) { void* start = Dst; for ( ; Size >= sizeof(__m256i); Size -= sizeof(__m256i) ) […]

Perché utilizzare StringBuffer in Java anziché l’operatore di concatenazione delle stringhe

Qualcuno mi ha detto che è più efficiente usare StringBuffer per concatenare stringhe in Java piuttosto che usare l’operatore + per String s. Cosa succede sotto il cofano quando lo fai? Cosa fa StringBuffer diverso?

Perché l’API Java usa int invece di short o byte?

Perché l’API Java usa int , quando un byte short o pari sarebbe sufficiente? Esempio: il campo DAY_OF_WEEK nella class Calendar utilizza int . Se la differenza è troppo minima, allora perché esistono questi tipi di dati ( short , int )?

Accelerare il conteggio delle righe in MySQL

Supponiamo, a scopo illustrativo, di eseguire una libreria utilizzando una semplice tabella “libri” MySQL con tre colonne: (id, titolo, stato) id è la chiave primaria il titolo è il titolo del libro lo stato potrebbe essere un enume che descrive lo stato corrente del libro (ad esempio DISPONIBILE, VERIFICA, TRATTAMENTO, MANCANTE) Una semplice query per […]

Stampa tutte le bandiere JVM

Trovato una bandiera JVM interessante: java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version Stampa centinaia di varie opzioni, non ne ho mai sentito parlare prima. Stampa anche valori predefiniti, che aiutano a diagnosticare meglio i comportamenti di JVM. Un’altra bandiera interessante è: -XX:+UnlockExperimentalVMOptions Qualcuno sa di qualsiasi documentazione che spiega ognuno di loro?

Che setup fa REP?

Citando il manuale di riferimento sull’ottimizzazione delle architetture Intel® 64 e IA-32 , §2.4.6 “Miglioramento delle stringhe REP”: Le caratteristiche delle prestazioni dell’utilizzo della stringa REP possono essere attribuite a due componenti: sovraccarico di avvio e velocità di trasferimento dei dati. […] Per la stringa REP di trasferimento di granularità più ampio, con l’aumento del […]

L’aggiunta di “LIMIT 1” alle query MySQL li rende più veloci quando sai che ci sarà solo un risultato?

Quando aggiungo il LIMIT 1 a una query MySQL, interrompe la ricerca dopo che trova 1 risultato (rendendolo così più veloce) o recupera ancora tutti i risultati e troncerà alla fine?

Visualizza e cancella le cache / buffer di Postgres?

A volte eseguo una query Postgres che impiega 30 secondi. Quindi, eseguo immediatamente la stessa query e impiega 2 secondi. Sembra che Postgres abbia una sorta di caching. Posso vedere in qualche modo che cosa contiene questa cache? Posso forzare l’eliminazione di tutte le cache per scopi di ottimizzazione? Nota: fondamentalmente sto cercando una versione […]

Come impedire a GCC di ottimizzare un ciclo di attesa intenso?

Voglio scrivere un firmware in codice C per i microcontrollori AVR Atmel. Lo compilerò usando GCC. Inoltre, voglio abilitare le ottimizzazioni del compilatore ( -Os o -O2 ), poiché non vedo alcun motivo per non abilitarle e probabilmente genereranno un modo migliore di assemblaggio più veloce della scrittura manuale dell’assieme. Ma voglio un piccolo pezzo […]

Misurazione del tempo di query effettivo su MySQL

Come posso misurare il tempo di esecuzione di una query senza misurare il tempo che trascorre in attesa di una serratura, ecc.? La mia unica idea era quella di misurare continuamente la stessa query e registrare il tempo più veloce.