新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2021-6-14
- 在线时间
- 3 小时
|
1金钱
在裸机环境下,尝试对一块1.47MB的内存中填充数据,填充一次大约需要160毫秒,为什么会这么长时间?是我哪里配置的不对?
请各位大人帮我看看,为什么这么慢.
以下是我的代码,填充1000次,需要160秒,平均每次需要160毫秒。
#include <stdio.h>
typedef unsigned int u32;
int main(void)
{
u32 i = 0;
u32 frames = 0;
#define PIXELS (800 * 480) /* 相当于 800 x 480 分辨率 */
/* buf内存块的大小是 800 x 480 x 4 字节,约为 1.47MB 大小。*/
u32 buf[PIXELS];
/* 第一次获取时间值,单位是微秒。*/
unsigned long tick1 = get_us_tick();
/* 对buf内存块进行填充操作,重复执行1000次。*/
for (frames = 0; frames < 1000; frames++) {
for (i = 0; i < PIXELS; i++)
buf[i] = 0x12345678;
}
/* 第二次获取时间值,单位是微秒。*/
unsigned long tick2 = get_us_tick();
/* 打印两次时间之差值 */
/* 这个时间差值就是对这个1.47MB的内存块写1000次的时间 */
printf("%d - %d = %d ns \r\n", tick2, tick1, tick2 - tick1);
/* 计算并打印平均时间,单位是毫秒。 */
printf("%d ms/f\r\n", (tick2 - tick1) / 1000 / frames);
return 0;
}
|
最佳答案
查看完整内容[请看2#楼]
添加#include 说不定就能用memset了,你想办法检查一下cpu频率和内存总线的频率看看,是不是哪没初始化
|