Main Content

整数オーバーフローまたは非有限のサポートの無効化

コード ジェネレーターは、次の状況をサポートするコードを生成します。

  • 整数演算の結果が、整数オーバーフローとして知られている、データ型で表現可能な範囲外になる。

  • 演算によって非有限値 (infNaN) が生成される。

こうした状況が発生しないと分かっている場合、生成されるコードのサイズを減少させ、速度を向上させるために、サポート コードの生成を抑制することができます。ただし、サポート コードの生成を抑制し、こうしたいずれかの状況が発生した場合、生成されるコードの動作は元の MATLAB® コードの動作と一致しない可能性があります。

整数オーバーフローのサポートの無効化

既定では、コード ジェネレーターは整数オーバーフローを処理するコードを生成します。オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。コードが整数オーバーフローのサポートに依存していないことが分かっている場合、パフォーマンスを改善するために、整数オーバーフローを処理するコードの生成を無効にできます。整数オーバーフローのサポートを無効にするには、次を実行します。

  • MEX またはスタンドアロン コード (スタティック ライブラリ、ダイナミック リンク ライブラリ、または実行可能プログラム) のコード生成構成オブジェクトで、SaturateOnIntegerOverflow プロパティを false に設定します。

  • MATLAB Coder™ アプリで、[整数オーバーフローで飽和]No に設定します。

メモ

コードがサポートに依存していないと確認できない限り、整数オーバーフローのサポートを無効にしないでください。サポートを無効にし、実行時チェックを有効にすると、生成されたコードによって整数オーバーフローのエラーが発生します。整数オーバーフローのサポートを無効にし、実行時チェックも無効にした場合、整数オーバーフローの動作は未定義です。ほとんどの C コンパイラはオーバーフロー時にラップします。

コードが整数オーバーフローのサポートに依存しているかどうかをチェックするには、次を実行します。

  1. 整数オーバーフローのサポートを無効にします。

  2. チェックを有効にして、実行時に整数オーバーフローを検出します。

  3. 入力値のすべての範囲に対して生成されたコードを実行します。生成されたコードが整数オーバーフローを検出すると、エラーが発生します。

非有限数のサポートの無効化

既定では、スタンドアロン コード (スタティック ライブラリ、ダイナミック リンク ライブラリ、または実行可能プログラム) に対しては、コード ジェネレーターは非有限数 (infNaN) を処理するコードを生成します。コードが非有限数のサポートに依存していないことが分かっている場合、生成されたコードのパフォーマンスを改善するために、このサポートを無効にできます。非有限サポートを無効にするには、次を実行します。

  • コード生成構成オブジェクト内で SupportNonFinite プロパティを false に設定する。

  • MATLAB Coder アプリで、[非有限数のサポート]No に設定する。

非有限サポートを無効にした場合、生成されたコードが予測どおりに動作することをテストします。

関連するトピック