Latar Belakang: Saya sedang menulis kode micro controller C untuk menulis file EBML. EBML seperti XML biner dengan elemen bersarang, tetapi alih-alih tag awal dan akhir, ada ID awal, panjang, dan kemudian data. Saya menulis ini ke Flash eksternal dalam aplikasi daya rendah, jadi saya ingin menjaga agar flash mengakses seminimal mungkin. Memori juga terbatas, karena tidak ada yang mudah.
Ketika saya bisa menyimpan seluruh elemen EBML dalam memori, kemudian membuatnya mudah karena saya bisa kembali dan mengisi panjang setiap elemen setelah saya tahu berapa panjangnya. Masalahnya adalah apa yang harus dilakukan ketika saya tidak dapat menahan seluruh elemen dalam memori. Pilihan yang saya lihat adalah:
- Tulis apa yang saya tahu, lalu kembali dan tambahkan panjangnya (termudah, tetapi tambahkan lebih banyak akses flash daripada yang saya inginkan)
- Hitung panjang setiap elemen sebelum saya mulai menulisnya (relatif mudah, tetapi banyak waktu prosesor)
- Beralih mode begitu ingatan saya terisi, sehingga saya kemudian melanjutkan melalui data, tetapi hanya untuk menghitung panjang untuk elemen yang sudah disimpan dalam memori. Kemudian tulis apa yang ada dalam memori saya, dan kembali dan lanjutkan memproses data dari tempat saya tinggalkan. (Pilihan favorit saya sejauh ini)
- Berikan elemen panjang kasus maksimum atau terburuk ketika mereka perlu ditulis dan panjang akhir mereka belum diketahui. (Lebih mudah daripada di atas, tetapi bisa menjadi bumerang dan membuang-buang ruang)
Pertanyaan: Sepertinya ini seharusnya menjadi masalah yang relatif umum yang dipikirkan orang. Saya tahu itu juga bisa terjadi ketika membentuk beberapa paket data. Apakah ada teknik yang lebih baik / lebih umum / lebih diterima yang saya lewatkan di sini? Atau hanya beberapa istilah untuk masalah yang bisa saya cari?