Ben aynı birkaç dosya üzerinde File.ReadLines() kullanıyorum ve bu şekilde bir dosya okuma ile ilgili ek yükü bilmiyorum?C# bir txt dosyasını önbelleğe almak veya File.ReadLines kullanarak
Her dosya kimliğini (hash) bir txt dosyası içinde arıyorum.
Şu anda bu kodu kullanıyorum ancak bu dizin dosyalarını önbelleğe almam gerekip gerekmediğini merak ediyorum. Tereddütlerim, dosyaların her seferinde önbelleğe yeniden yüklenerek performansın artmasına neden olacak kadar sık düzenlenecek olmasıdır. Her yinelemede metin dosyasına bir satır ekleyeceğim çok olasıdır (bir eşleşme olmayacaktır).
foreach (var myfile in allfiles) // roughly 5 thousand
{
...
foreach (var line in File.ReadLines(myfile.path + "\index.txt"))
{
// compare the line to the current record's hash
if (myfile.hash.equals(line))
...
return x;
}
...
// otherwise add a new line (a hash) to index.txt
}
...
dosyada bağlı kontrol edilmesi gereken farklı yollar yaklaşık 5-10 index.txt dosyaları böylece her biri önbelleğe gerekecektir ... vardır.
Dizin.txt dosyasını önbelleğe almak daha iyi bir fikir midir? File.ReadLines() yükü çok mu var?
Herhangi bir işaretçi için teşekkürler. Eğer yeterince kısa olan birçok dosyalarınız varsa
Sana kimse bu cevap için kolay ve doğru yolu olmadığı kadar bu bir kendinizi test gerekecek düşünüyorum. Bağırmam, bunun için bir Sözlük kullanmanın daha hızlı olacağını, ancak test edene kadar bilmeyeceğinizi söylüyor. Onu inşa et ve test et. – Michael
Soru şu ki, ramdaki tüm dosyaları saklayabilir misin? Yani bunlar 5k dosyaları değil mi? – Mafii
Performans söz konusu olduğunda, varsayımlar üzerinde çalışmayın. Bir yürütücü ile yürütme sürelerini ölçün ve oradan yükün kabul edilebilir olup olmadığını bildiğinizden emin olabilirsiniz. –