Cで入力を秒単位で、ナノ秒単位で入力する関数を書きたいと思います。秒とナノ秒をマイクロ秒に変換し、合計をマイクロ秒で返します。秒とナノ秒をマイクロ秒に変換する最速の(最適な)方法
unsigned long long get_microseconds(int seconds, unsigned long long nSeconds);
これで変換はかなり簡単です。私は、次の使用することができ、式 -
mSeconds =秒* 1000000 + nSeconds/1000実装の最速の方法だろう何
(ナノ秒の変換精度の損失は私のタイマーは100マイクロ秒のいずれにしても最小分解能を持ち、大丈夫です)この方程式は乗算および除算演算子を使用せずに最高の精度と最小のCPUサイクル数を得ることができます。
EDIT:GNUベースでカスタム設計されたカスタムツールチェーンで実行しています。私は実際に算術演算のパフォーマンスをテストしていませんが、パフォーマンスに影響するかどうか、また改善する方法があるのかどうか不思議です。
実行中のハードウェアは?これは実際にボトルネックになっていますか?そのパフォーマンス要件を満たすことができない単純な実装ですか? – user2357112
早すぎる最適化をしないでください!ターゲット解像度でカウントするだけではない理由(タイマーが100μsの解像度の場合は100 * 1000を追加します) – Olaf
どのようなDSPですか?どんな種類の算術とそれがどのように扱うことができるかを知ることは非常に重要です。 –