CMakelistsに追加すると処理が高速化する魔法の1行についてまとめました。

【C++最適化】魔法の1行で高速化

エンジニアにとって、プログラムの処理速度は典型的な問題の1つです。

この処理速度の問題を解決するための方法として、コンパイルの最適化オプションがあります。恥ずかしながら、コンパイルの「最適化」を先日初めて知りました。これによって、私のプログラムの処理が格段に早くなりました。今まで処理速度で悩んでいてのは何だったんだ、という気持ちになりました。

この記事では、CMakelistsでコンパイルの最適化を指定することで、処理を高速化する方法についてまとめていきます。

魔法の1行

結論としては、CMakelists.txtに下記の1行を追加するだけです。

add_compile_options(-O2)

CMakelistsの実装例

cmake_minimum_required(VERSION 2.8.3)
project(hoge_project)

#魔法の1行
add_compile_options(-std=c++11 -O2 -g -Wall)

find_package(catkin REQUIRED COMPONENTS
	std_msgs
)

catkin_package(
)

include_directories(
	${catkin_INCLUDE_DIRS}
)

add_executable(hogehoge src/hogehoge.cpp)
target_link_libraries(hogehoge ${catkin_LIBRARIES})

解説

  • add_compile_options
    コンパイルオプションを指定
  • オプション
    • -std=c++11
      C++11でコンパイル
    • -O2
      最適化
    • -g
      デバックあり
    • -Wall
      警告あり

補足

「-O2 -g」と「RelWithDebInfo」モードは同値らしい。

さいごに

こんな便利なオプションなのに、今まで誰も教えてくれませんでした。C++のプログラムにおいて処理速度で困っている方は、ぜひ試してみてください。参考になれば幸いです。


以上です。

Ad.