0

データ バッファーを準備し、次のような外部提供の API 関数を介して送信する関数があります。

send(uint8_t* data_buf, uint32_t length)

私の特定のケースでは、コードは常に正確に 8 バイトを送信し、最初の 7 バイトは常に同じです (この事実を変更することはできません。これはある種のメッセージ ヘッダーです)。

私は限られた組み込み環境にいるため、コードのサイズとパフォーマンスを最適化するか、少なくとも 2 つの最適なトレードオフを選択したいと考えています。

現在、次の 2 つのオプションがあります。

  1. グローバル配列を作成します。最初の 7 バイトを 1 回初期化し、配列を送信する前に最後のバイトを上書きします。
  2. ローカル配列を作成し、8 バイトすべてを書き込んでから送信します。

上記の2つよりも良い解決策はありますか?

4

1 に答える 1

-1

組み込みシステムでも、8バイトを超えるキャッシュを持つことが期待できます。したがって、パフォーマンスは実際には問題ではありません。databuf[8]どちらの場合も完全にキャッシュされます。最初のケースのコード サイズは、2 ~ 3 命令分小さくなる可能性があります。

(別の問題がよくあります: XIP が可能な場合、コード/フラッシュ サイズと RAM サイズは別個の制約です)。

于 2013-01-15T09:30:04.587 に答える