素朴な疑問なのですが。
私はC++を使用しています。
あるクラスのメンバ関数があってその中でおおまかに3つの処理をしているとします。
3つの処理がありますが、ただ1つの目的のための処理です。
その関数内が見づらいという事で、ここだけでしか使用しない3つの処理を更に関数にしてもいいのでしょうか?
例えるなら
void classA::add()
{
a += 1;
a += 2;
a += 3;
}
これら3つの処理(加算)を関数にしてしまおうという事です。
※もちろん、実際の3つの処理(加算)はもっと複雑です。
関数にアクセスするのも、微々たるものですが処理が増えると思います。
大きなプロジェクトの場合、積み重なって無視できない程になるのでしょうか?
皆さんはどう書かれていますか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
クラス定義中にメンバ関数の定義を書けば, 暗黙に inline 指定されます.
inline は処理系に対するヒントなので, 「必ずインラインになる」とは限らないですが.
No.3
- 回答日時:
他の方も書かれているように、分かりやすさ重視で書けば良いと思います。
読んで分かりやすいだけではなく、コンパイラにも分かりやすい様に。
小細工はせず、基本的にはコンパイラの最適化機能に任せる方が良い様に思います。
>積み重なって無視できない程になるのでしょうか?
ループの中から関数を呼びだす時には、何もしないと関数呼び出しのオーバーヘッドが蓄積します。
そこはできればinlineを明示的に。
それとループに入る前に、回る回数が事前に分かるように書くとベクトル化などの最適化がされやすくなります。
whileよりもできればforに
No.1
- 回答日時:
関数内が見づらく、その中の処理を3つにくくったほうが理解しやすいなら、私ならそうします。
確かにその結果関数コールのコストが増えますし、積み重なって無視できなくなることもわずかながら考えられます。しかし、大きなプログラムでパフォーマンスを考慮すべき場所はたいてい関数コールのコスト以外にあり、その場合考慮すべき個所を「関数内のある部分」から「ある関数」に変えることになるので、プロファイラでどこが問題か細かく検知しやすくなります。
言われてみれば確かに他の部分をどうにかしますよね…
見やすさ(バグ箇所の分かりやすさ)を重視したいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- Excel(エクセル) 時間差を求めるマクロコードを教えてください。 4 2022/05/17 18:22
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- Excel(エクセル) excelにて、ある固定値から連番を振りたいが、上限値が異なる連番を振る処理を複数回行いたい場合 6 2022/10/22 11:01
- C言語・C++・C# win10で、正確な待ち時間の作り方 6 2023/02/14 18:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どうやってもFor文を抜けてしま...
-
IF文に時間(何時から何時ま...
-
【C#/Java?】try-catchでcatch...
-
iPhoneのニューラルエンジンっ...
-
特定の名前のオートシェイプの...
-
Excel VBA セルの名前があるか...
-
VB6にてネットワーク上にある共...
-
StatusStripの表示が更新されな...
-
エクセルVBAでロックをかけたい
-
ListViewから選択中の文字列を取得
-
特定のファイルを他のプロセス...
-
vbaのエラー対応(実行時エラー...
-
UWSCのTHREADについて
-
決まった時刻に処理を行いたい
-
Functionで戻り値を複数返す方法
-
C++ Builder6.0 TNMFTPコンポー...
-
C# 指定時間(秒間)の間処理を...
-
VBAの進捗状況をリアルタイ...
-
検索サイトで、検索結果に広告...
-
Windows APIのメソッドをPInvok...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
特定のファイルを他のプロセス...
-
ExcelのVBAで、選択したファイ...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
Word VBA。各マクロの間に待ち...
-
【VBA】エラー処理で別プロシー...
-
UWSCのTHREADについて
-
シェルスクリプトでファイル内...
-
ドリブン??
-
Functionで戻り値を複数返す方法
-
iPhoneのニューラルエンジンっ...
-
エクセル VBAで複数セル選択時...
-
COBOL OCCURSで指定したデータ...
-
どうやってもFor文を抜けてしま...
おすすめ情報