当我遍历文件 A 中的行时,我正在解析该行并将每个字符串 ( char*) 放入char**.
在一行的末尾,我运行一个过程,该过程包括打开文件 B,使用fgets,fseek并fgetc从该文件中获取字符。然后我关闭文件 B。
我为每一行重复重新打开和重新关闭文件 B。
我想知道的是:
malloc使用and是否会对性能产生重大影响free,因此我应该使用静态的东西myArray[NUM_STRINGS][MAX_STRING_WIDTH]而不是动态的东西char** myArray?打开和关闭文件 B 是否有显着的性能开销(从概念上讲,数千次)?如果我的文件 A 已排序,有没有办法让我
fseek在文件 B 中“向后”移动,以重置我之前在文件 B 中的位置?
编辑结果证明,一种双重方法大大减少了运行时间:
我的文件 B 实际上是二十四个文件之一。而不是打开同一个文件 B1 一千次,然后打开 B2 一千次,等等。我打开文件 B1 一次,关闭它,B2 一次,关闭它等等。这将数千次
fopen操作减少fclose到大约 24 次。我曾经
rewind()重置文件指针。
这产生了大约 60 倍的速度提升,这已经绰绰有余了。谢谢你指点我rewind()。