Mi chiedo quale sarebbe la differenza di prestazioni quando si zippano i dati usando rubyzip rispetto all'utilizzo di librerie os native per eseguire la compressione. Sto recuperando dati da comprimere da un URL e quindi utilizzando ZipOutputStream per creare il file zip. Nel caso di programmi di utilità del sistema operativo nativo, sto pensando di utilizzare lo strumento zip. Sarebbe bello sentire alcuni pro e contro per entrambi gli approcci.Compressione Rubyzip vs OS nativo
risposta
Si scopre che non c'è molta differenza in termini di tempo impiegato per l'operazione o l'utilizzo della CPU. Ma c'era una differenza significativa quando si trattava dell'utilizzo della memoria. Con rubyzip il processo ha finito per utilizzare molta più memoria rispetto a quando si utilizza il programma di utilità zip. Nel nostro caso d'uso l'utilizzo della memoria è stato un problema significativo e quindi abbiamo finito con l'utilizzo del programma di utilità zip.
Se si stanno prelevando i dati dal Web, è improbabile che il collo di bottiglia sia rubyzip. Dubito che vedrete molte delle differenze di prestazioni in quanto sarà per lo più limitato dalla velocità della vostra connessione web. Inoltre rubyzip utilizza le librerie native per svolgere gran parte del lavoro. Probabilmente funzionerà bene e sarei molto sorpreso se fosse molto più lento per questo tipo di applicazione. Ora, se tu fossi preoccupato di quanti cicli di CPU ci sono voluti perché migliaia di thread sarebbero stati eseguiti contemporaneamente, allora potresti voler usare le librerie di gnu C.
Benchmark === – denysonique