小编wan*_*rer的帖子

为什么memcpy()和memmove()比指针增量更快?

我复制从N个字节pSrc来pDest.这可以在一个循环中完成:

for (int i = 0; i < N; i++)
    *pDest++ = *pSrc++
Run Code Online (Sandbox Code Playgroud)

为什么这比memcpy或慢memmove?他们用什么技巧加快速度?

c c++ loops

90
推荐指数
6
解决办法
3万
查看次数

为什么我的SSE不比C/C++代码快?

我刚刚开始使用SSE优化我的计算机视觉项目代码,旨在检测图像中的肤色.以下是我的功能.该函数采用彩色图像并查看每个像素并返回概率图.注释掉的代码是我最初的C++实现,其余的是SSE版本.我对它们进行了计时,并且发现SSE并不比我原来的C++代码快得多.有关正在发生的事情或如何进一步优化功能的任何建议?

void EvalSkinProb(const Mat& cvmColorImg, Mat& cvmProb)
{
    std::clock_t ts = std::clock();  
    Mat cvmHSV = Mat::zeros(cvmColorImg.rows, cvmColorImg.cols, CV_8UC3);
    cvtColor(cvmColorImg, cvmHSV, CV_BGR2HSV);
    std::clock_t te1 = std::clock(); 

    float fFG, fBG;
    double dp;

    __declspec(align(16)) int frgb[4] = {0};
    __declspec(align(16)) int fBase[4] = {g_iLowHue, g_iLowSat, g_iLowVal, 0};
    __declspec(align(16)) int fIndx[4] = {0};
    __m128i* pSrc1 = (__m128i*) frgb;
    __m128i* pSrc2 = (__m128i*) fBase;
    __m128i* pDest = (__m128i*) fIndx;
    __m128i m1;

    for (int y = 0; y < cvmColorImg.rows; y++)
    {
        for (int x = 0; …
Run Code Online (Sandbox Code Playgroud)

c++ opencv sse

3
推荐指数
1
解决办法
1871
查看次数

编写内联汇编而不是常规c/c ++代码要快多少?

我的一位资深同事通过编写内联汇编来优化函数(他正在实现图像过滤).这真的有必要吗?现代编译器不会为我们这样做吗?通常,通过将C代码转换为汇编代码,我们获得了多少收益?如果汇编代码确实带来了很多好处,那么我们何时应该将C/C++代码转换为汇编代码,何时应该保留代码,因为汇编代码很难读取和维护.

c c++ assembly

0
推荐指数
1
解决办法
834
查看次数

标签 统计

c++ ×3

c ×2

assembly ×1

loops ×1

opencv ×1

sse ×1