2016-04-05 19 views
0

Bir dosya üzerinde gerçekleştirilecek bir okuma() için geçen süreyi ölçen bir program oluşturdum ve dosya sistemimin blok boyutunu belirlemek için bunu defalarca yapıyorum.Dosya sisteminden okunmak için geçen süre()

Sorum: bu verileri komplo sonra, denemek her ne olursa olsun ben her tekrarında okuyorum boyut, ilk okuma başka okuma ile karşılaştırıldığında önemli ölçüde daha uzun bir zaman alır. Bir blok bir kez okumayı tamamladığında, yeni blokta bir sonraki okumayı yapmanın zamanının biraz daha zaman alacağını biliyorum (ki bu benim arsada gözlemledim) ama bu ilk okuma değeri bundan çok daha yüksektir.

Herhangi bir dosya sistemi var mı/O.S. Bu neden böyle bir cevap?

+1

Dosyalarınız ne kadar büyük? Sadece birkaç KB ise, önbelleğe alınabilirler (düzey önbellek vb.). – Leandros

+1

@Leandros Yeterli kullanılmayan bellek varsa, gigabayt dosyaları bile sayfa önbelleğinde saklanabilir. – EOF

+0

@Leandros Dosyanım 3 MB. –

cevap

2

Bunun neden olabileceğine dair birkaç neden düşünebilirim. Dosya sistemi, diskten okunan verileri önbelleğe alabilir (önceden getirebilir), böylece programınıza yalnızca 1 blok döndürse bile, diskten gerçekten çok sayıda blok okumuş olabilir; Böylece bir dahaki sefere okunduğunuzda, aslında önbelleğe alınan verilerden daha fazlasını çekiyorsunuz. Ayrıca, ilk okumayı yapmanın, okuma başlığının dosyanın başlangıcına taşınması gerekebileceği de olasıdır. Bu muhtemelen dosya sistemine bağlı. Önbellekleme nedeni daha olası olduğunu düşünüyorum?