Linux SOC 系统性能快速测试

举报
aiot_bigbear 发表于 2022/09/25 00:29:13 2022/09/25
【摘要】 **Linux SOC 系统性能快速测试** Linux SOC 系统性能测试可以采用一些通用的benchmark,但是这些也存在局限性。 SOC性能不能单看CPU 频率,DDR频率,还需要考虑...
		**Linux SOC 系统性能快速测试**

Linux SOC 系统性能测试可以采用一些通用的benchmark,但是这些也存在局限性。

SOC性能不能单看CPU 频率,DDR频率,还需要考虑总线效率,这就需要综合测试。

使用内存申请 并拷贝等操作 即可模拟上述具体过程。 memteste也是类似的原理。

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <sys/time.h>


#define MEM_SIZE (10*1024*2014)
int main_perfornace_test(void)
{
	struct timeval time1;
	struct timeval time2;	// 处理信息

	printf("%s:%s\n",__DATE__,__TIME__);	
	
	
	int cnt =0;
	int i =0;
	int j =0;
	unsigned int timescost=0;
	unsigned int totalcost=0;
	char* psrc = (char*)malloc(MEM_SIZE);
	if(!psrc)
		printf("malloc src fail\n");
	char* pdst = (char*)malloc(MEM_SIZE);
	if(!pdst)
		printf("malloc dst fail\n");

	for (j =0;j<10;j++)
	{

		gettimeofday(&time1, NULL);
		memset(psrc,0x1f,MEM_SIZE/2);
		memset(psrc+MEM_SIZE/2,0xff,MEM_SIZE/2);
		memset(pdst,0x0,MEM_SIZE/2);
		memset(pdst+MEM_SIZE/2,0x55,MEM_SIZE/2);

		memcpy(pdst,psrc+MEM_SIZE/2,MEM_SIZE/2);
		memcpy(pdst+MEM_SIZE/2,psrc,MEM_SIZE/2);

		gettimeofday(&time2, NULL);

		timescost = (time2.tv_sec - time1.tv_sec)*1000*1000+time2.tv_usec-time1.tv_usec;
		totalcost += timescost;

		printf("time1.tv_sec %d us\n" ,  time1.tv_sec);
		printf("time2.tv_sec %d us\n" ,  time1.tv_sec);
		printf("time1.tv_usec %d us\n" ,  time1.tv_usec);
		printf("time2.tv_usec %d us\n" ,  time2.tv_usec);

		printf("step %d cost is %d us\n" ,j,  timescost);
	}
	if(psrc)
		free(psrc);		
	if(pdst)
		free(pdst);		

	printf("\n****average cost is %d us\n" ,totalcost);
}

不同的SOC 系统,即可看出不同的时间效率,越小SOC性能越高。
当然涉及多核心CPU 需要考虑多进程 需要修改下程序即可。

文章来源: blog.csdn.net,作者:悟空胆好小,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/xushx_bigbear/article/details/122905174

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。