相关疑难解决方法(0)

绩效评估的惯用方法?

我正在评估我的项目的网络+渲染工作负载。

程序连续运行一个主循环:

while (true) {
   doSomething()
   drawSomething()
   doSomething2()
   sendSomething()
}
Run Code Online (Sandbox Code Playgroud)

主循环每秒运行 60 多次。

我想查看性能故障,每个程序需要多少时间。

我担心的是,如果我打印每个程序的每个入口和出口的时间间隔,

这会导致巨大的性能开销。

我很好奇什么是衡量性能的惯用方法。

日志打印是否足够好?

benchmarking microbenchmark

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

用neon intrinsics替换memcpy

我试图通过编写同样的霓虹内在函数来击败"memcpy"函数.以下是我的逻辑:

uint8_t* m_input;  //Size as 400 x300
uint8_t* m_output; //Size as 400 x300
//not mentioning the complete code base for memory creat 

memcpy(m_output, m_input, sizeof(m_output[0]) * 300* 400);
Run Code Online (Sandbox Code Playgroud)

氖:

int32_t ht_index,wd_index;
uint8x16_t vector8x16_image;

for(int32_t htI =0;htI < m_roiHeight;htI++){
    ht_index = htI * m_roiWidth ;

    for(int32_t wdI = 0;wdI < m_roiWidth;wdI+=16){
        wd_index = ht_index + wdI;
        vector8x16_image = vld1q_u8(m_input);

        vst1q_u8(&m_output[wd_index],vector8x16_image);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在imx6硬件上多次验证了这些结果.

结果:

Memcpy :0.039 milisec
neon memcpy: 0.02841 milisec
Run Code Online (Sandbox Code Playgroud)

我读了一些没有预先说明的说明,我们不能打败MEMCPY.

如果是,那么我的代码如何给出这些结果.是对还是错

arm simd neon cortex-a

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

标签 统计

arm ×1

benchmarking ×1

cortex-a ×1

microbenchmark ×1

neon ×1

simd ×1