有人告诉我,为了提高程序的性能,我应该使用一些专门的矩阵类而不是我自己的类.
StackOverflow用户推荐:
起初我想使用uBLAS然而阅读文档,结果证明这个库不支持矩阵 - 矩阵乘法.
毕竟我决定使用EIGEN库.所以我交换了我的矩阵类Eigen::MatrixXd
- 然而事实证明,现在我的应用程序比以前工作得更慢.使用EIGEN之前的时间是68秒,在将我的矩阵类交换到EIGEN矩阵程序后运行87秒.
花费最多时间的程序部分看起来像那样
TemplateClusterBase* TemplateClusterBase::TransformTemplateOne( vector<Eigen::MatrixXd*>& pointVector, Eigen::MatrixXd& rotation ,Eigen::MatrixXd& scale,Eigen::MatrixXd& translation )
{
for (int i=0;i<pointVector.size();i++ )
{
//Eigen::MatrixXd outcome =
Eigen::MatrixXd outcome = (rotation*scale)* (*pointVector[i]) + translation;
//delete prototypePointVector[i]; // ((rotation*scale)* (*prototypePointVector[i]) + translation).ConvertToPoint();
MatrixHelper::SetX(*prototypePointVector[i],MatrixHelper::GetX(outcome));
MatrixHelper::SetY(*prototypePointVector[i],MatrixHelper::GetY(outcome));
//assosiatedPointIndexVector[i] = prototypePointVector[i]->associatedTemplateIndex = i;
}
return this;
}
Run Code Online (Sandbox Code Playgroud)
和
Eigen::MatrixXd AlgorithmPointBased::UpdateTranslationMatrix( int clusterIndex )
{
double membershipSum = 0,outcome = 0;
double currentPower = …
Run Code Online (Sandbox Code Playgroud) 嗨,我想使用XML文件作为配置文件,我将从中读取我的应用程序的参数.我遇到了PugiXML库,但是我遇到了获取属性值的问题.我的XML文件看起来像那样
<?xml version="1.0"?>
<settings>
<deltaDistance> </deltaDistance>
<deltaConvergence>0.25 </deltaConvergence>
<deltaMerging>1.0 </deltaMerging>
<m> 2</m>
<multiplicativeFactor>0.7 </multiplicativeFactor>
<rhoGood> 0.7 </rhoGood>
<rhoMin>0.3 </rhoMin>
<rhoSelect>0.6 </rhoSelect>
<stuckProbability>0.2 </stuckProbability>
<zoneOfInfluenceMin>2.25 </zoneOfInfluenceMin>
</settings>
Run Code Online (Sandbox Code Playgroud)
要削减XML文件,我使用此代码
void ReadConfig(char* file)
{
pugi::xml_document doc;
if (!doc.load_file(file)) return false;
pugi::xml_node tools = doc.child("settings");
//[code_traverse_iter
for (pugi::xml_node_iterator it = tools.begin(); it != tools.end(); ++it)
{
cout<<it->name() << " " << it->attribute(it->name()).as_double();
}
}
Run Code Online (Sandbox Code Playgroud)
我也试图用这个
void ReadConfig(char* file)
{
pugi::xml_document doc;
if (!doc.load_file(file)) return false;
pugi::xml_node tools = doc.child("settings");
//[code_traverse_iter
for (pugi::xml_node_iterator it = …
Run Code Online (Sandbox Code Playgroud)