gpt4 book ai didi

创建一个函数以从文件 : which approach would be more efficient? 创建数组

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

我正在考虑编写一个函数,该函数使用 calloc 创建一个数组来容纳文件中的数据(目前以字符形式)。据我了解,我的两个最明显的选择是读取所有字符以获得所需的总大小,使用 calloc 分配所需的空间,然后使用 fseek 到达文件的开头,并在返回之前填充数组指向数组的指针。第二个选项是创建一个小的初始数组,在复制时连续添加 realloc 以根据需要添加 block ,并且在 realloc 失败的情况下,在释放旧 calloc 之前将所有数据传输到新的、更大的大小的新 calloc,并且读取完所有内容后,返回数组指针。

问题实际上是,realloc 在处理大型数据集时失败的可能性有多大,就好像它不是一样,我认为第二种方法在这种情况下会更有利。

据我所知,创建一个大数组然后根据需要缩小会更棘手,所以我没有将其列为一个选项;如果我的说法有误,请指出。

最佳答案

无论您是根据内存不足的可能性还是性能来判断质量,都不需要考虑第二个和第三个案例,因为第一个案例显然是赢家。除非不要读取每个字符以获得所需的总大小。使用二进制文件并查找到末尾;获取位置(即长度),然后返回到起点。这在几乎所有可以想象的场景中都将是即时的,并且肯定不会比阅读每个字符更糟糕。当然,无论重新分配多么有效,它都不会比只分配一次更好。如果您通过性能来判断质量,那么您现在可能已经对其进行了测试。

关于创建一个函数以从文件 : which approach would be more efficient? 创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36910091/

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