C Equivalents for Protocol Buffers Delimited I/O Functions in Java
Dalam Protocol Buffers, menambah awalan panjang sebelum mesej adalah penting untuk membaca dan menulis berbilang mesej daripada fail. Walaupun Java mempunyai fungsi I/O "Terbatas" (cth., parseDelimitedFrom, mergeDelimitedFrom, writeDelimitedTo) untuk tujuan ini, C tidak mempunyai fungsi yang setara.
Pengesyoran Google
Walau bagaimanapun, pendekatan ini tidak mempunyai pengoptimuman dan mungkin gagal untuk input lebih besar daripada 64MB.
Pelaksanaan C Dioptimumkan
Seterusnya, pelaksanaan C yang dioptimumkan telah dibangunkan dan dikongsi oleh bekas pengarang perpustakaan protobuf Google. Pelaksanaan ini termasuk:
Butiran Pelaksanaan
Fungsi writeDelimitedTo mencipta CodedOutputStream baharu untuk setiap mesej dan mensirikannya menggunakan kaedah SerializeWithCachedSizes. Jika mesej muat dalam satu penimbal, kaedah SerializeWithCachedSizesToArray yang lebih pantas digunakan.
Fungsi readDelimitedFrom mencipta CodedInputStream baharu dan mengenakan had saiz setiap mesej menggunakan kaedah PushLimit. Ia kemudian menghuraikan mesej menggunakan kaedah MergeFromCodedStream dan mengesahkan bahawa keseluruhan mesej telah digunakan.
Ketersediaan
Pelaksanaan C yang dioptimumkan ini bukan sebahagian daripada pustaka protobuf rasmi. Walau bagaimanapun, ia boleh didapati dalam pelbagai repositori pihak ketiga atau dilaksanakan secara manual menggunakan coretan kod yang disediakan.
Atas ialah kandungan terperinci Cara Melaksanakan I/O Terbatas Penampan Protokol dalam C : Kehilangan Fungsi dan Pengoptimuman Berpotensi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!