Rumah > Java > javaTutorial > Cara Melaksanakan I/O Terbatas Penampan Protokol dalam C : Kehilangan Fungsi dan Pengoptimuman Berpotensi

Cara Melaksanakan I/O Terbatas Penampan Protokol dalam C : Kehilangan Fungsi dan Pengoptimuman Berpotensi

Patricia Arquette
Lepaskan: 2024-11-03 06:44:30
asal
500 orang telah melayarinya

 How to Implement Protocol Buffers Delimited I/O in C  : Missing Functionality and Potential Optimizations

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

  • Menulis saiz mesej sebagai Varian
  • Mensiri mesej menjadi penimbal

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:

  • Menulis saiz sebagai Varian
  • Menggunakan kaedah GetDirectBufferForNBytesAndAdvance untuk penyiaran yang cekap
  • Menguatkuasakan had saiz setiap mesej sebanyak 64MB

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan