我在多边形代码中有一些观点,它是我从python调用的dll的一部分。代码没有像我希望的那样快速执行,因此我正在分析并尝试优化代码。
这是有问题的功能:
int mesh_to_points(const meshobj * mesh, const float * datam, const float * x, const float * y, float * datap, const int np)
{
float fact[4];
for (int a=0; a<np; a++)
{
for (int b=0; b<mesh->numels; b++)
{
element cell = mesh->cell[b];
if (x[a]>cell.maxx || x[a]<cell.minx || y[a]>cell.maxy || y[a]<cell.miny)
{
continue;
}
if (interp_weights(cell.vx, cell.vy, x[a], y[a], fact, cell.nv))
{
datap[a]=b+1.00;
}
}
}
return 0;
}
对于我正在尝试的一般测试,这需要4.133秒才能运行。当我改变行
datap[a]=b+1.00
类似......
float cc=b+1.00
总运行时间为0.162秒 - 更符合我希望它运行的方式。
我对C ++比较陌生,到目前为止只有初学者的理解。这种性能是否仅仅改为智能编译器? (在这种情况下是MSVC)或者我填充数组“datap”的方式是否存在固有的缺陷?