BufferedOutputStream'in amacı, bunu kullanırken performans kazancı mı merak ediyorum?
BufferedOutputStream'in amacı, bunu kullanırken performans kazancı mı merak ediyorum?
İşte hat BufferedOutputStream API'sı:
Sınıf bir tamponlanmış çıktı akışı uygular. Böyle bir çıktı akışını kurarak, bir uygulama temel çıktı akışına byte yazabilir olmadan her bir byte için yazılı sisteme çağrı yapılmasına sebep olur.
Tampon içindeki işlemlerin çoğunu altta yatan sisteme çağrı yapmadan yapabilir.
Örneğin, dosyaya yazmayı düşünün: arabellek olmaksızın, her bayt için bir sistem çağrısı yapmak zorundadır, ki bu açıkça yavaştır.
Adından da anlaşılacağı gibi,
BufferOutputStream dahili bir arabellek (
byte[]) Her bir küçük yazının içeriklerinin ilk kopyalanması. Altta yatanlara yazılır.
OutputStream arabellek dolduğunda veya akış temizlendiğinde veya akış kapatıldığında.
Her yazım işlemi için altta yatan (nispeten büyük) sabit bir yük varsa, bu büyük bir fark yaratabilir.
OutputStream, için olduğu gibi
FileOutputStream (bir işletim sistemi çağrısı yapmalı) ve birçok sıkıştırılmış akış.
Aynı zamanda, birçok akış tabanlı kitaplık kendi tamponlarını (XML ve JSON yazarları gibi) kullanır ve
BufferedOutputStream hiçbir fayda sağlamaz. Fakat kendi ek yükü nispeten düşüktür, bu yüzden fazla risk yoktur.
BufferedOutputStream, bir arabelleğe yazılacak değerleri depolayarak ve arabellek dolduğunda veya flush () yöntemi çağrıldığında aslında bunları yazarak verimliliği arttıran çıktı veri arabelleği sağlar.
Java BufferedOutputStream sınıfı, bir çıkış akışının tamponlanması için kullanılır. Verileri depolamak için dahili olarak arabellek kullanır. Verileri doğrudan bir akışa yazmaktan daha fazla verimlilik katıyor. Yani, performansı hızlı hale getirir.