- 締切済み
C++ソフトの起動と終了を速くしたいです。
外部のソフトから何度も呼び出して使うようなソフトです。 呼ばれるたびに起動と終了を繰り返します。 ライブラリはOPENCVを使っております。 プログラムの処理が0.1秒程度 起動と終了にかかる時間が0.4秒ほどです。 起動する回数が非常に多いので結構な時間がかかってしまいます。 何とか起動と終了にかかる時間を速くする方法はないでしょうか。 どなたかご教授頂けないでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- tamio0712
- ベストアンサー率50% (3/6)
根本的に、OSという仕組みを少し理解する事をお勧めします。 残念ですが、プログラムの実行と終了に関しては、言語に関わらず、速度をコーディング(プログラマーの技術)で、どうにかできるものではありません。 OS上でプログラムを実行すると、OSは、そのプログラムを動かす為に、メモリ領域を確保して、そこにプログラムをロードします。 この時に、プログラム上のメモリアクセスに関するコードに関して、確保したメモリ領域のアドレスを参照するように、コードを書き換えてます。 これは、プログラムを作った時点では、どこのメモリアドレスで動くかは不明なので、実行プログラム内には、相対アドレスと呼ばれる仮のアドレスが、実際には書き込まれています。 そして、OSがプログラムを実行した時点で、その相対アドレスを、確定したアドレスに変更してます。 そして、プログラムが終了した時に、OSは、そのプログラムの為に確保したメモリ領域を、解放して、他のプログラムで利用できるように、メモリ上の記録を書き換えます。 その為、プログラムの実行・終了は、プログラム本体の時間以外に、OS自体の処理の時間が発生します。 その為に、プログラム自体の実行時間に対して、実行・終了の時間に差異が生じます。 今回の場合であれば、何度も実行される事が、初めから前提になってるのであれば、プログラム自体を、常駐型にして、外部から呼び出せる仕組みにする。 または、C++を使っているのだから、そもそも、そのプログラム自体をオブジェクト化してしまい、そのプログラムを実行する事があるプログラムは、そのオブジェクトを呼び出す形式にしてはどうでしょうか。 私だったら、常駐型だと、いろいろコードに修正が発生するのと、外部から実行させたりにも面倒が多いので、オブジェクト(class化)して、そのプログラムを実行する事があるプログラムに、オブジェクトとして登録しておき、再利用するオブジェクト形式で対応すると思います。
- chie65536(@chie65535)
- ベストアンサー率44% (8803/19962)
>何とか起動と終了にかかる時間を速くする方法はないでしょうか。 ・ライブラリ部分をDLL化してメモリに常駐させる。 ・呼び出されるプログラムそのものをDLL化してメモリに常駐させる。 など。