gpt4 book ai didi

c - fscanf 和 sscanf 的速度

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:47 24 4
gpt4 key购买 nike

对于 C 作业,我应该将一个大文本文件中的单词分解并一个一个地处理。基本上,一个词是字母表的任何线性序列。因为,这将是我程序的瓶颈,所以我想尽可能快地完成这个过程。

我的想法是使用扫描函数格式说明符 ([a-zA-z]) 将文件中的单词扫描到字符串缓冲区中。如果缓冲区已满,我会检查文件中是否还有更多字母表(基于文件指针所在的位置)。如果有,那么我会增加缓冲区大小并继续将更多字母复制到缓冲区中,直到我遇到非字母为止。

问题是我使用的是 fscanf 还是 sscanf(将整个文件复制到一个字符串中)。一个比另一个更快,还是有比我的想法更好的替代方案?

最佳答案

您的问题几乎偏离主题,因为它需要基于意见的答案。

了解一种方法与另一种方法相比有多快的唯一方法是尝试两种方法并测量生成的可执行文件在真实数据上的性能。

凭借当今普通 PC 的计算能力,需要一个非常的大文件来衡量实际性能差异。

所以请继续实现您的想法。您似乎很了解潜在的性能瓶颈,将这些想法转化为实际的 C 代码。针对此问题提供 2 个不同但正确的程序以及性能分析应该会让您获得 A+。作为雇主,我很重视这种测试方法。

PS:恕我直言,大部分时间都花在从文件系统获取数据上。如果文件大于可用内存,那应该是你的瓶颈。如果文件适合操作系统文件系统缓存,后续基准测试应该会比第一个基准测试提供更好的性能...

如果您被允许编写系统特定代码,请尝试使用 mmap和简单for通过在 mmapped char 上查找表进行显式测试循环数组。

关于c - fscanf 和 sscanf 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33250700/

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