2010-09-27 14 views

cevap

4
  1. rastgele erişim için sıralı blok erişimi ve file:pread/2,3 için file:read/2 bakınız.
  2. file:open/2 numaralı telefondan compressed seçeneğine bakın.
+0

Üretim için daha yüksek performansa sahip bir şey bulmak zorundayım, ancak bu prototipleme için çok iyi çalışıyor. – Erlang

+0

Ölçtünüz ya da tahmin ediyor musunuz? Dosyayı [raw, binary, read_ahead] 'i kullanarak ve blok yönelimli işlemeyi kullanarak açtığınızda dosya: read/2' ile oldukça memnunum. Beklediğiniz performans nedir? –

5

Tecrübelerime göre, dosyası: read_ahead ve raw rağmen, bir miktar veri ile sık aradığınız takdirde/2 yalnız çok yavaş olacaktır okuyun. Bunun üzerine bir ikili arabellek uygulamalısınız. Eğer bu blok yönelimli işlemden ibaretse, kabul ediyorum.

Birkaç saatlik çalışma zamanlarıyla ilgili olarak (dosyasıyla: salt okunur/2) 2 dakikalığına (arabelleğe almada saf Erlang uygulamasında) bahsediyorum. İşte

benim bir seferde bir kaç 10 bayt okumak için ölçümlerdir: okuyun: Bu örnekte

%% Bufsize vs. runtime [ns] 
%% 50  169369703 
%% 100  118288832 
%% 1000  70187233 
%% 10000  64615506 
%% 100000 65087411 
%% 1000000 64747497 

dosyası için göreli havai çünkü, performans gerçekten 10 KB tampon boyutu üzerinde artmaz yeterince küçük olur.