海思MMZ 内存拷贝到 OS内存速度会变慢

海思 MMZ内存,是海思做isp处理,图像编码,解码所用到的内存,它与系统内存是分割开来的。现在遇到了一个很有趣的现象,我从MMZ内存拷贝数据写文件的速度要比我从系统内存拷贝数据写文件的速度慢很多。实验的方式:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <unistd.h> // for close
#include <sys/time.h>
// mpp head
#include "sample_comm.h"
void main(void)
{
HI_U8 *pVirAddr;
HI_U64 u64PhyAddr;
HI_S32 s32Ret;
HI_U8 *pMallocAddr;
struct timeval start,end;
double timeuse;
FILE* pFile;
pFile = fopen("/dev/tmp/img.tst", "wb");
s32Ret = HI_MPI_SYS_MmzAlloc(&u64PhyAddr, (void**)&pVirAddr, NULL, HI_NULL, 16*1024*1024);
if(HI_SUCCESS != s32Ret)
{
   SAMPLE_PRT("HI_MPI_SYS_MmzAlloc err:0x%x",s32Ret);
   return NULL;
}

gettimeofday(&start,NULL);
fwrite(pVirAddr, 16*1024*1024, 1, pFile);
fflush(pFile);
gettimeofday(&end,NULL);
fclose(pFile); 
timeuse = end.tv_sec - start.tv_sec + (end.tv_usec - start.tv_usec)/1000000.0;
printf("save time MMZALLOC %f!\n", timeuse);


pFile = fopen("/dev/tmp/img1.tst", "wb");
pMallocAddr = (HI_U8 *) malloc (1024*1024*16);
gettimeofday(&start,NULL);
fwrite(pMallocAddr, 16*1024*1024, 1, pFile);
fflush(pFile);
gettimeofday(&end,NULL);
fclose(pFile); 
timeuse = end.tv_sec - start.tv_sec + (end.tv_usec - start.tv_usec)/1000000.0;
printf("save time MALLOC %f!\n", timeuse);

HI_MPI_SYS_MmzFree(&u64PhyAddr, (void**)&pVirAddr);
free(pMallocAddr);
}

测试方式,首先在dev目录下新建一个tmp目录,然后运行程序打印结果如下
在这里插入图片描述
可以看到他们之间的速度差别很大,需要继续查找相关的原因。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值