Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Originariamente inviato da White_Dragon
    Mmm... lavevo letto da qulke parte che erano + veloci e mi era pure sembrato...
    a questo punto se mi dici così mi viene da chiederti un'ultima cosa e scusami per le troppe domande ^__^

    Secondo te se voglio scrivere una mole di dati +tosto grande, ti faccio un es. banale:
    Riscrivere un filmato AVI correggendo le parti errate o chunk di byte 0x00, sempre in c/c++ che metodi mi consiglieresti da usare? Avrei bisogno di metodi veloci per scrivere file di 600/700 mb...
    Di base proverei con gli stream C++ e con quelli C e farei un profiling per vedere quali dei due sono più veloci. Se devi spremere il massimo invece userei direttamente le API di Windows, oppure, se i file sono sempre più piccoli di 1.5 GB e sono da correggere in-place, considererei la possibilità di mappare il file in memoria. In ogni caso il trucco per andare veloci è leggere sempre il file a blocchi di dimensioni adeguate in un buffer e lavorare su esso, invece di continuare a leggere a spizzichi e bocconi dallo stream.
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #12
    Grazie per la dritta!! Proverò con un buffer di 2048 o molto + grandi.
    Ciao e grazie ancora x la tua disponibilità!!

  3. #13
    Io andrei di buffer allocato sull'heap delle dimensioni di una pagina di memoria (le puoi ottenere con la GetSystemInfo); dovresti così ottenere un qualche vantaggio in caso di swapping.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #14
    quindi mi consigli di fare un buffer +tosto grosso... mmm...
    quel che dici ha logica perkè in effetti se il buffer lo faccio delle dimensioni di una pagina di memoria l'effetto può cambiare a seconda dei requisiti di sistema.
    Proverò! 6 un grande!!

  5. #15
    Originariamente inviato da White_Dragon
    quindi mi consigli di fare un buffer +tosto grosso... mmm...
    quel che dici ha logica perkè in effetti se il buffer lo faccio delle dimensioni di una pagina di memoria l'effetto può cambiare a seconda dei requisiti di sistema.
    Le pagine di memoria su una determinata architettura che io sappia sono sempre della stessa dimensione, l'idea è che se crei un buffer di esattamente una o più pagine di memoria (ciascuna di solito è 4 KB, ma il valore esatto è fornito dalla GetSystemInfo) dovresti ottenere qualche beneficio se la pagina viene swappata su disco, dal momento che la mamoria viene gestita a pagine e tu sfrutti completamente la o le pagine che ti servono. Comunque si tratta di un'ottimizzazione piuttosto risibile, credo che l'effetto sia misurabile solo su un sistema stracarico e su file molto grandi.
    Proverò! 6 un grande!!
    Per così poco...
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #16
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    le pagine dovrebbero essere dipendenti dal sistema operativo no?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.