Dizeleri bir dosyaya yazdıran bir Go programım var. 20000 kez yinelenen bir döngü var ve her yinelemede bir dosyaya 20-30 dizeleri yazıyorum. Sadece bir dosyaya yazmanın en iyi yolunun hangisi olduğunu bilmek istedim.Yazma İşlemi Maliyeti [Go lang]
Yaklaşım 1: kodunun başlangıcında dosya işaretçisi açık tutun ve her dize için yazmak. 20000 * 30 yazma işlemi yapar.
Yaklaşım 2: bytes.Buffer Git ve tampon her şeyi depolamak ve dosya işaretçisi kodunun başına veya sonuna açılmalıdır bu durumda end.Also de yazmak kodu. önemli mi?
Yaklaşım 2'nin daha iyi çalışması gerektiğini varsayıyorum. Birisi bunu bir sebeple teyit edebilir. Yazma, bir kerede periyodik olarak yazmaktan nasıl daha iyidir. Çünkü dosya işaretçisi zaten açık olacak. f.WriteString(<string>)
ve buffer.WriteString(<some string>)
arabellek kullanıyorum bytes.Buffer
türünde ve f
dosya tanıtıcısı açık. Dosyalarda yazarken zaman alan işlemler syscalls ve disk G/Ç'tır.
Bu, ['bufio'] 'nun (https://golang.org/pkg/bufio/) adresi için geçerlidir. – JimB