私はboost.pythonが初めてで、PythonからC++ベクトルにリストを渡すための簡単な関数を作成しました:
void SetXValues(boost::python::list xl){
int n = len((xl));
xvals.resize(n);
for(unsigned int i=0; i<n; i++){
xvals[i] = boost::python::extract<double>((xl)[i]);
}
}
xvals は C++ STL ベクトルです。この関数は機能し、Python リストを C++ にロードできますが、非常に遅いようです。
私が行った小さな速度テストは、C++ と純粋な Python でビニング アルゴリズムを作成することでした。結果は、Python からデータを渡す時間を含めると、C++ メソッドは 5 倍高速であるにすぎないことを示していますが、もちろんビニング アルゴリズムだけではかなり高速です (74 倍)。
では、上記の機能を改善してより効率的にする方法はありますか?