Utilizzo dell'assieme per scrivere su un file

1

Sto lavorando con un'applicazione di trading (lettura dei dati dallo scambio) che genera un carico di dati di tipo bucket al secondo. Abbiamo diversi "livelli di log" ma anche il minimo livello di log genera così tanti dati! Questo processo di creazione dei log è piuttosto intenso per I / O.

Dato che posso scrivere assembly usando __asm__, mi stavo chiedendo se l'operazione di scrittura sui file sia codificata in assembly, ci sarà un aumento di velocità? Il resto del codice è C ++.

Inoltre, quali sono i caveat di fare una cosa del genere?

    
posta Chani 12.02.2013 - 05:47
fonte

1 risposta

15

Il sovraccarico delle prestazioni di scrittura di molti dati su disco non è la velocità di esecuzione del codice, ma piuttosto i limiti fisici del disco rigido reale. L'assemblaggio non ti darà un notevole aumento delle prestazioni.

La soluzione migliore è quella di registrare meno dati (consigliato, se si sta registrando tutto ciò che può essere utile) o modificare le unità in modo che possano scrivere più velocemente! Considerare RPM più alti, SSD, RAID (zero penso per la scrittura parallela) o almeno un disco dedicato con un controller dedicato. Ma davvero, a meno che tu non abbia davvero bisogno di tutti i dati di registrazione, stai perdendo tempo. Correggi i tuoi livelli di log in modo che WARN ed ERROR registrino solo le cose quando accadono effettivamente queste cose. (e se stanno accadendo tutto il tempo ... correggono il tuo codice).

    
risposta data 12.02.2013 - 06:00
fonte

Leggi altre domande sui tag