Я написал программу на Linux с использованием C / C ++, которая читает многоадресные пакеты и пытается понять, что указанное событие c произошло или не так быстро, как это возможно. Задержка является ключевым моментом здесь.
В протоколе первые два байта представляют тип сообщения. В моей текущей реализации я читаю первые два байта и решаю, сколько байтов мне следует прочитать для полезной нагрузки в соответствии с типом сообщения. А именно я выполняю 2 операции чтения для 1 пакета. Одна из операций чтения предназначена для длины пакета, а другая - для полезной нагрузки. Итак, есть 2 операции ввода / вывода.
В качестве альтернативы, я мог бы сделать это, я прочитал столько, сколько смогу, проверить первые 2 байта, скажем, это N, go для N байтов и сформировать package1 и package2. Если после считывания package1 и package2 остаются оставшиеся байты, прочитайте дополнительные байты и снова обработайте байтовый буфер, как описано выше. В этом методе я делаю 1 ввод / вывод, но требуется пройти в байтовом буфере.
Какой из них теоретически быстрее? Я знаю, что должен реализовать и измерить оба, но я просто хотел услышать ваши предложения.
Спасибо