228 Star 937 Fork 322

GVP朱天龙 (Armink) / EasyFlash

 / 详情

压力测试,读取出的值和写入不匹配

已完成
创建于  
2019-06-13 16:35
void ef_test()
{
	easyflash_init();
	char key[32] = { 0 };
	char value[32] = { 0 };
	char read_value[32] = { 0 };
	size_t read_len = 0;

	size_t i;
	for (i = 0; i < 10000; i++)
	{
		sprintf(key, "key_%d", (i % 100));
		sprintf(value, "value_%d", (i % 100));

		printf("[%6d] save env: %s=%s\n", i, key, value);
		if (ef_set_env_blob(key, value, strlen(value) + 1) != EF_NO_ERR)
		{
			printf("[%6d] save env: %s=%s fail\n", i, key, value);
			break;
		}

		if (ef_get_env_blob(key, read_value, 32, &read_len) <= 0)
		{
			printf("[%6d] read env: %s fail\n", i, key);
			break;
		}
		printf("[%6d] read env: %s=%s\n", i, key, read_value);

		if (strcmp(value, read_value) != 0)
		{
			printf("[%6d] env value not match, %s : %s fail\n", i, value, read_value);
			break;
		}

	}
}

ef_env.c 读取env时,name加 ‘\0’后正常。

env_name_addr = env->addr.start + ENV_HDR_DATA_SIZE;
ef_port_read(env_name_addr, (uint32_t *) env->name, EF_WG_ALIGN(env_hdr.name_len));
env->name[env_hdr.name_len] = '\0';

另外压力测试,越到后面,读取写入就越慢。 迭代遍历匹配 key 值,随着写入flash的值越多就越来越慢。

评论 (1)

ugaofeng 创建了任务

你的打印函数写的有问题,改为以下形式试试

printf("[%6d] read env: %.*s fail\n", i, read_len, key);

blob 跟 string 不一样,也不能用 strcmp 去对比,对比要用 memcmp

性能的问题正在优化,建议持续关注项目进度,有兴趣也可以加我 QQ 交流

朱天龙 (Armink) 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
9021 armink 1578914611
C
1
https://gitee.com/Armink/EasyFlash.git
git@gitee.com:Armink/EasyFlash.git
Armink
EasyFlash
EasyFlash

搜索帮助