POSIX fread / fwrite işlevleriyle okuma / yazma dosyaları için hangi arabellek boyutunu seçmeliyim?
grep
, cp
)
read
/ write
fonksiyonlar veya ANSI / ISO / IEC fread
/ fwrite
fonksiyonlar mı demek istediniz ?
POSIX fread / fwrite işlevleriyle okuma / yazma dosyaları için hangi arabellek boyutunu seçmeliyim?
grep
, cp
)
read
/ write
fonksiyonlar veya ANSI / ISO / IEC fread
/ fwrite
fonksiyonlar mı demek istediniz ?
Yanıtlar:
ANSI / ISO fread/fwrite
işlevleri arabelleğe alınır. Tampon genellikle 8 KiB'dir ve kodunuzda kullandığınızdan bağımsız olarak ayrıntı düzeyi verir. Tamponu biraz artırmak, belki de aşağıdaki değere getirmek mantıklı olabilir. Toplu transfer için, ekstra kopyalar nedeniyle her zaman biraz daha yavaş olacaktır.
POSIX read/write
işlevleri için işletim sistemine ve cihaza ve diğer birçok şeye bağlıdır, ancak pratik deneyim, tamponu onlarca KiB'nin ötesine yükselterek herhangi bir performans iyileştirmesi elde etmemenizdir, bu nedenle 32 veya 64 KiB doğru.
Bazı sistemlerde bağımlılık diğerlerinden daha büyüktür. Linux'ta fark genellikle 8 KiB'ın üzerinde minimumdur (bu nedenle varsayılan arabellek iyidir), örneğin Windows CE'de (yerel API kullanarak; POSIX'leri yoktur) 64 KiB'den bile büyük olsa da yardımcı olur. Ayrıca aygıta da bağlı olabilir.
fread
, fwrite
) ve tamponsuz 32/64 K? Görüntü verileri gönderiliyorsa, arabelleğe alınmış veya arabelleğe alınmamayı seçmek için belirli bir gerekçe var mı?