相同的算法在Windows中运行速度非常慢,在Ubuntu中运行速度非常快

时间:2014-07-08 08:14:50

标签: windows algorithm opencv ubuntu-12.04 mat

我在两台计算机上使用相同的算法。一个是Ubuntu,另一个是Windows。

  • 在Ubuntu中,算法通过名为 ADTF 的框架获取输入图像。这里的算法工作在 70fps 。一切都很完美。

  • 在Windows中,算法从视频流中获取输入图像,而不使用任何框架(visual studio 2012作为IDE)。此算法适用于 2fps

当我检查计算时间时,我在算法中看到一个函数,在Windows中需要0.4秒,在Ubuntu中需要0.011秒。并且此功能在此过程中被称为'n'次。此函数在其参数中仅使用cv::Mat,并且一些浮点数。我不认为数据类型float会导致这个大的时间变化。

我检查了文件中c ++代码的每一行。它在两种情况下完全相同。但只有计算时间减少了30多倍。我不知道发生了什么。任何人都可以帮助我吗?

注意:的  两台计算机的配置完全相同。  此外,在两种情况下,该函数都被称为“n”次

Intensity getIntensity (Grids &inputGrids, Mat inputImage)// groups of 2d grids
{
    type allGridIntensity;
    for()//takes single grid
    {
        type singleGridIntensity;
        for()//takes single point
        {
            double intensity = inputImage.at<uchar>(yPose, xPose);
            singleGridIntensity.push_back(intensity);
        }
        allGridIntensity.push_back(singleGridIntensity);
    }
    return allGridIntensity;
}

1 个答案:

答案 0 :(得分:1)

没有代码就很难提供帮助,但是如果你在性能上遇到如此大的差距,我就检查你的编译器的优化设置。如果你有for周期并且你的实现适合于那个编译器将并行化你的代码,你运行得更快。但如果没有正确的代码示例,那只是猜测