İkili ve ASCII dosya boyutu karşılaştırması


17

Daha sonra Paraview (.vtu veya vtk dosyası) tarafından okunacak bir hesaplama, bazı veriler yazmak gerekiyor.

Dosya boyutu söz konusu olduğunda ASCII formatını mı yoksa Binary formatını mı seçmeliyim?

Yanıtlar:


20

Tek endişeniz dosya boyutu ise, ikili dosyalar istersiniz. Açıklayıcı bir örnek için, bir dosyaya 1 adet çift kesinlikli kayar nokta numarası yazdığınızı varsayalım. Dosya sisteminin bunu mükemmel bir şekilde ele alabileceğini ve dosyayı, başlıkları ve dolguyu tutmanın 0 olduğunu varsayalım.

İkili dosya için, bu sayı RAM'deki sayının tam boyutunu veya 8 bayt alır.

ASCII biçiminde şunları tutacaktır:

  • Tabanın 16 basamağı
  • Ondalık için 1 dönem
  • Üssü sınırlamak için 1 karakter
  • Üs işareti için 1 karakter
  • Üs için 2-3 karakter

Bir karakter için sadece 1 bayt kullandığını varsayarsak, aynı sayıyı tutmak için 22 bayttır. Bu, sayılar arasında dilimlemek için gereken karakterleri saymaz (genellikle en az 1). Bu nedenle ASCII formatı için dosya boyutu yaklaşık 3 kat daha büyük olacaktır.

Depolanan dosyalarda kesinlik için dosya boyutunda işlem yapabilirsiniz (yalnızca tabanda 5-6 basamak tutun), ancak bu dosyaları ne için kullandığınıza bağlıdır. ASCII'nin ana avantajı, insan tarafından okunabilir verilerin hata ayıklanması veya üretilmesidir.


3
Bilimsel alanda da önemli olan uzun süreli arşivleme ve güvenilir paylaşımdır, bu nedenle verimsizliklerine rağmen ASCII CSV çok yaygın ve tavsiye edilir (PDF) .
horchler

2
Bir başka yararlı nokta, ASCII CSV kodlamasının çok verimli olmamasına rağmen, ascii dosyanızda bir dosya sıkıştırma yardımcı programı (zip, gzip vb.) Kullanmanın genellikle dosya boyutunu bir ikili dosyanın boyutuna benzer bir şeye indireceği .
Brian Borchers

3
Dikkatli olun, çünkü bazı giriş / çıkış kitaplıkları ASCII'de IEEE Çift Hassas sayıları çıkardıktan ve tekrar okuduktan sonra bit tekrarlanabilirliği için biraz elde edecek kadar dikkatli değildir. .
Brian Borchers

5
Horchler'ın yorumu ile ilgili: Eminim HDF5 gibi iyi kullanılmış, standartlaştırılmış açık ikili formatlar uzun süre olacaktır. Ben şahsen tavsiye ederim.
AlexE

1
+ Doğruluk, kompaktlık, gönül rahatlığı ve (özellikle) hız için mümkün olduğunda ikiliye bağlıyım. Sonra daha fazla kompaktlığa ihtiyacım varsa, onu sıkıştırabilirim. İçeriği görsel olarak okuyabilmem gerekirse, bunun için küçük bir program yazabilirim. Öte yandan, görsel olmak ve Excel, R vb.Gibi rastgele programlara kolayca geçmek daha önemliyse, CSV gidilecek yoldur.
Mike Dunlavey

15

Pratikte, görselleştirme dosyalarında nadiren 3 geçerli basamaktan daha doğru verilere ihtiyacınız vardır. Bu durumda, ASCII - belki de şaşırtıcı bir şekilde - ikili formdan daha kompakttır. Arşivlemeyi düşünüyorsanız, bu ASCII dosyalarını bzip-up almak, alabileceğiniz en küçük dosyaları verecektir.

Bununla birlikte, Paraview sıkıştırılmış bir ikili forma sahip VTU formatını okur (XML tabanlı, ancak veri önce libz sıkıştırılmış ve daha sonra ASCII metni vermek için tekrar uuen kodlanmıştır). Tipik dosyalarda bu 4-10 kat tasarruf sağlar. Büyük dosyalar için, bu kesinlikle gitmenin yoludur.


2
Bunu diğer cevabın karşıtlığı için oyladım. Her iki şekilde de güçlü bir fikrim yok, ama burada olması gereken iyi bir nokta var.
Bill Barth

Alternatif olarak, düşük bitleri açıkça sıfırlayın ve ikiliyi sıkıştırın.
Jed Brown

Vay be, bu biraz uğraşmayı gerektiriyordu. Yoksa bunu yapan fonksiyonlar var mı? (Şamandıra dökmek ve tekrar ikiye katlamak dışında.)
Wolfgang Bangerth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.