gpt4 book ai didi

c - 数据读取性能优化

转载 作者:行者123 更新时间:2023-11-30 15:28:11 25 4
gpt4 key购买 nike

目标是一次从文件中读取一条记录。每条记录为 16 字节。下面的代码一次从文件中读取一个 ELEMENT。如何更改 fread() 以一次读取所有 16 个字节?

目标:一次从磁盘读取一条记录的数据(在一次 fread() 调用中从磁盘读取 16 个字节),然后将其拆分为单独的元素。

//Original unoptimized code to read one ELEMENT at a time
// Read the file in a naive way:
// One data item at a time!
struct record read_record_naive(FILE *fp, int endian)
{
struct record my_data = {0,0,0,0,0};
int result;
uint8_t empty=0;

my_data.valid = 1;
result = fread(&(my_data.my8), sizeof(my_data.my8), 1, fp);
if(!result)
{
my_data.valid = 0;
return my_data;
}

result = fread(&(empty), sizeof(empty), 1, fp);
if(!result)
{
my_data.valid = 0;
return my_data;
}

result = fread(&(my_data.my16), sizeof(my_data.my16), 1, fp);
if(!result)
{
my_data.valid = 0;
return my_data;
}

result = fread(&(my_data.my32), sizeof(my_data.my32), 1, fp);
if(!result)
{
my_data.valid = 0;
return my_data;
}

result = fread(&(my_data.my64), sizeof(my_data.my64), 1, fp);
if(!result)
{
my_data.valid = 0;
return my_data;
}

if(endian == ENDIAN_LITTLE)
record_swap_endian(&my_data);

return my_data;
}

最佳答案

简单地说:

result = fread(&my_data), sizeof(my_data), 1, fp);

这还不够吗?

关于c - 数据读取性能优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26709222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com