Bazı dekompresyon programlarını hızlı bir şekilde karşılaştırma fikrim vardı. Örneğin, gz için şu komutu çalıştırırım:
timeout 10 zcat foo.gz | wc -c
Bu, dekompresörün 10 saniye içinde çıkarabileceği veri miktarını ölçer.
Tek sorun, işe yaramamasıdır: zcat öldürüldüğünde, wc de öldürülür, bu nedenle bayt sayısını almıyorum, sadece bir Terminated
mesaj.
Yani, soru şudur: sayıyı bir şekilde engelleyerek wc'den saymayı almanın veya bir terim sinyali aldığında bile bir sonucu basan wc yerine bir alternatif kullanmanın bir yolu var mı?
Tabii ki alternatifler var:
Geçici bir dosyaya yazma:
timeout 10 zcat foo.gz > /dev/shm/x ; du -sb /dev/shm/x ; rm -r /dev/shm/x
Bununla ilgili sorun, çok fazla bellek kullanması ve ayrıca bazı performans cezalarına sahip olmasıdır.Bunun yerine ulimit kullanımı:
ulimit -t 10; zcat foo.gz | wc -c
Bu da çalışır, ancak yalnızca cpu süresini ölçer, bu nedenle G / Ç nedeniyle yavaşlama (örneğin sıkıştırma daha kötü olduğu ve diskten daha fazla bayt okunması gerektiği için) ölçülmez.Daha küçük test dosyaları yapmak:
Bu elbette işe yarayabilir ve en güzel çözüm olabilir. Ancak, bu çok sayıda geçici dosya oluşturur.