小编geo*_*rge的帖子

使用Eigen比使用我自己的类更糟糕的表现

几周前,我问了一个关于矩阵乘法性能的问题.

有人告诉我,为了提高程序的性能,我应该使用一些专门的矩阵类而不是我自己的类.

StackOverflow用户推荐:

  • 的uBLAS
  • EIGEN
  • BLAS

起初我想使用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)

c++ performance matrix eigen

10
推荐指数
4
解决办法
2万
查看次数

使用pugixml的Parsin XML文件

嗨,我想使用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)

c++ xml parsing xml-parsing

2
推荐指数
1
解决办法
8462
查看次数

标签 统计

c++ ×2

eigen ×1

matrix ×1

parsing ×1

performance ×1

xml ×1

xml-parsing ×1