- 締切済み
C言語の処理速度について
こんにちは C言語を使い始めました。 あるコードで ソース(1):デバッグ用にログを多めに吐き出すようにしているソース。 ソース(2):ソース(1)からログ排出だけコメントアウトしたソース。 を作ってみました。 ですが、 ソース(1)で機能確認後、ソース(2)にすると途端に処理速度が遅くなります。 (1)(2)で実質的な違いはログ排出のみなのですが、理由が分からず困っています。 【質問】 C言語でログ排出だけカットしたソースの方が処理速度が異様に遅い。 この対処策を質問させて下さい。 もし同じ経験された方がおられましたら是非アドバイスを頂ければ幸いです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ques9900
- ベストアンサー率34% (47/136)
まぁソースを見てみないと解りませんが、 そのプログラムはマルチスレッドかなにかですか? printfとかのおかげで、スレッドやプロセス切り替えが発生して スムーズだった可能性はあるかもしれませんね。 使っていない変数の宣言をしたらプロセスが落ちるようになった とかいうのもC言語ではあるあるですね。 モバイルなら、UI描画のメインスレッドとワーカースレッドで何かやってませんかね。 それと異様に遅いという言葉ではなく、具体的な値を使いましょう。
- yama1718
- ベストアンサー率41% (670/1618)
>(1)(2)で実質的な違いはログ排出のみ 本当にそうですか、ビルド設定をデバッグ用とリリース用と切り替えていませんか? 切り替えているなら、その違いが怪しいかもしれません。 多くはデバック用のビルド設定の方が ・デバック用のコード、ソースリストの対応データの埋め込みなど ・実行コードの最適化なし など、こちらの方が遅くなる要因が多いと思うのですが、 リリース用のビルド設定のコード最適化の設定も実行速度優先とコードサイズ優先のものがあり、それぞれトレードオフの関係になっている場合もあります。 一度、コードの最適化を全て外して確認してみると良いかもしれませんね。
- drum_KT
- ベストアンサー率43% (1108/2554)
わかりませんが、意図せず必要な部分までコメントアウトされていないかとか、逆にコメントアウトしたはずの部分の一部がコメントアウトされずに残っていてロジックが変になっていないかとか、そういう観点は100%潰しましたか? 私も昔よくCで書きましが、コンパイルエラーの原因が「1」と「l」の打ち間違いだったり、「;」が一つ抜けていることだったり、そういう些細な部分であればあるほどなかなか発見できずにソースと格闘した記憶があります。笑