如何加快在C ++中返回指向对象的指针的函数?

马特

我是机械工程师,所以请理解我没有接受正确的编码培训。我有一个有限元代码,它使用网格来制作构成模型的元素。该元素对这个问题并不重要,因此我省略了。元素和网格从文件中读取,并且该部分正常工作。

class Grid
{
private:
    int id;
    double x;
    double y;
    double z;
public:
    Grid();
    Grid(int, double, double, double);
    int get_id() { return id;};
};

Grid::Grid() {};
Grid::Grid(int t_id, double t_x, double t_y double t_z)
{
    id = t_id; x = t_x; y = t_y; z = t_z;
}

class SurfaceModel
{
private:
    Grid** grids;
    Element** elements;
    int grid_count;
    int elem_count;
public:
    SurfaceModel();
    SurfaceModel(int, int);
    ~SurfaceModel();
    void read_grid(std::string);
    int get_grid_count() { return grid_count; };
    Grid* get_grid(int);
};

SurfaceModel::SurfaceModel()
{
    grids = NULL;
    elements = NULL;
}

SurfaceModel::SurfaceModel(int g, int e)
{
    grids = new Grid*[g];
    for (int i = 0; i < g; i++)
        grids[i] = NULL;
    elements = new Element*[e];
    for (int i = 0; i < e; i++)
        elements[i] = NULL;
}

void SurfaceModel::read_grid(std::string line)
{
    ... blah blah ...
    grids[index] = new Grid(n_id, n_x, n_y, n_z);
    ... blah blah ....
}

Grid* SurfaceModel::get_grid(int i)
{
    if (i < grid_count)
        return grids[i];
    else
        return NULL;
}

当我需要实际使用网格时,可以使用get_grid,如下所示:

SurfaceModel model(...);
.... blah blah ..... 
for (int i = 0; i < model.get_grid_count(); i++)
{
    Grid *cur_grid = model.get_grid(i);
    int cur_id = cur_grid->get_id();
}

我的问题是,对get_grid的调用似乎比我认为简单地返回我的对象​​要花费更多的时间。我在代码上运行了gprof,发现在进行非常大的模拟时,get_grid被调用了约40亿次,并且使用x,y,z进行的另一次操作大致相同。该运算会进行一些乘法。我发现get_grid和数学运算大约花费相同的时间(约40秒)。看来我做错了什么。有没有一种更快的方法可以将物体从那里移出?

看到

我认为您忘记设置grid_countelem_count

这意味着它们将具有未初始化的(不确定的)值。如果为这些值循环,则可以轻松地结束许多迭代。

SurfaceModel::SurfaceModel() 
   : grid_count(0), 
     grids(NULL),
     elem_count(0),
     elements(NULL)
{
}

SurfaceModel::SurfaceModel(int g, int e)
   : grid_count(g), 
     elem_count(e)
{
    grids = new Grid*[g];
    for (int i = 0; i < g; i++)
        grids[i] = NULL;
    elements = new Element*[e];
    for (int i = 0; i < e; i++)
        elements[i] = NULL;
}

然而,我建议您要摆脱new该程序中的每个实例(并为网格使用向量)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

我该如何编写在模板类中声明的函数定义,以返回指向结构对象的指针?

来自分类Dev

函数返回指向C中数组类型的指针

来自分类Dev

C:指向返回枚举的函数的函数指针

来自分类Dev

指向C ++中函数的指针

来自分类Dev

指向C ++中的函数指针的指针

来自分类Dev

如何从函数返回指向结构的指针?

来自分类Dev

如何从函数返回指向数组的指针?

来自分类Dev

C函数返回指向结构的指针

来自分类Dev

c ++从函数返回指向结构的指针

来自分类Dev

std :: vector:如何在矢量C ++中返回指向对象的指针

来自分类Dev

指向C中内置函数的函数指针

来自分类Dev

C ++:如何返回指向非静态成员函数的指针?

来自分类Dev

在C中返回指向结构的指针

来自分类Dev

Typedef指向C ++中C函数的指针

来自分类Dev

指向C ++中对象数组的指针

来自分类Dev

指向C ++中对象属性的指针

来自分类Dev

指向C#中的函数的指针

来自分类Dev

在C函数中传递指向数组的指针

来自分类Dev

将int array []或指向int array []的指针返回到C中的调用例程的函数

来自分类Dev

如何从指向指针数组的指针中删除对象?

来自分类Dev

如何动态从向量中删除c ++中指向对象的指针?

来自分类Dev

如何动态从向量中删除c ++中指向对象的指针?

来自分类Dev

在C ++中返回指针的函数

来自分类Dev

如何在C#中创建“指向函数指针的typedef”?

来自分类Dev

如何从静态函数返回指向const的指针?

来自分类Dev

如何P /调用分配并返回指向新数组的指针的函数

来自分类Dev

如何修复我的代码以从函数返回指向结构的指针

Related 相关文章

  1. 1

    从C ++中的函数返回指向数组的指针?

  2. 2

    从C ++中的函数返回指向数组的指针?

  3. 3

    我该如何编写在模板类中声明的函数定义,以返回指向结构对象的指针?

  4. 4

    函数返回指向C中数组类型的指针

  5. 5

    C:指向返回枚举的函数的函数指针

  6. 6

    指向C ++中函数的指针

  7. 7

    指向C ++中的函数指针的指针

  8. 8

    如何从函数返回指向结构的指针?

  9. 9

    如何从函数返回指向数组的指针?

  10. 10

    C函数返回指向结构的指针

  11. 11

    c ++从函数返回指向结构的指针

  12. 12

    std :: vector:如何在矢量C ++中返回指向对象的指针

  13. 13

    指向C中内置函数的函数指针

  14. 14

    C ++:如何返回指向非静态成员函数的指针?

  15. 15

    在C中返回指向结构的指针

  16. 16

    Typedef指向C ++中C函数的指针

  17. 17

    指向C ++中对象数组的指针

  18. 18

    指向C ++中对象属性的指针

  19. 19

    指向C#中的函数的指针

  20. 20

    在C函数中传递指向数组的指针

  21. 21

    将int array []或指向int array []的指针返回到C中的调用例程的函数

  22. 22

    如何从指向指针数组的指针中删除对象?

  23. 23

    如何动态从向量中删除c ++中指向对象的指针?

  24. 24

    如何动态从向量中删除c ++中指向对象的指针?

  25. 25

    在C ++中返回指针的函数

  26. 26

    如何在C#中创建“指向函数指针的typedef”?

  27. 27

    如何从静态函数返回指向const的指针?

  28. 28

    如何P /调用分配并返回指向新数组的指针的函数

  29. 29

    如何修复我的代码以从函数返回指向结构的指针

热门标签

归档