gpt4 book ai didi

c++ - 打开文件和关闭文件语句定位: best practice,的优缺点

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

我有一段代码,包含许多循环迭代,打开文件关闭文件语句定位如下:

  • 主循环

    1. 做作业

    2. 打开文件

    3. 写入文件

    4. 关闭文件

    5. 继续工作

  • 结束循环

但是,另一种选择是:

  • 打开文件

  • 主循环

    1. 做作业

    2. 写入文件,[flush]

    3. 继续工作

  • 结束循环

  • 关闭文件

是否有定位包含许多循环迭代的open fileclose file语句的“最佳实践”?每个都有优点/缺点吗?我会看到性能差异吗?内存限制? future 的发展问题?

我主要用 Fortran 编码(因此有标签),但是,我想知道这是否依赖于语言,因为我也用其他语言编程。非常感谢任何帮助。

最佳答案

如果您可以在循环外执行任务,则最好执行它,因为每次将其添加到循环队列都会导致性能下降(n 次而不是 1 次)。因此,在循环之前声明变量或打开文件比每次迭代都重复要好。


  • 主循环
    1. 工作 - 成本:k * n
    2. 打开文件 - 成本 q * n
    3. 写入文件 - 成本 r * n
    4. 关闭文件 - 成本 s * n
    5. 继续工作 - 成本:l * n
  • 结束循环

总计 n * (k + q + r + s + l)


  • 打开文件 - 费用: q
  • 主循环
    1. 工作 - 成本:k * n
    2. 写入文件 - 成本 r * n
    3. 继续工作 - 成本:l * n
  • 结束循环
  • 关闭文件 - 成本: s

总计 n * (k + r + l) + q + s


sq 非常昂贵,因为访问系统磁盘上的文件需要更多时间,并且与访问变量或执行计算相比非常慢,因为它是需要从磁盘中获取数据,而不是存储在 RAM 中并且可以通过代码流轻松访问的变量。请参阅有关缓存和 io 缓冲的更多信息。

至于性能:

$ python -m timeit 'open("hw.txt").read()'
1000 loops, best of 3: 240 usec per loop
$ python -m timeit 'a=2;b=3;c=a**b'
100000 loops, best of 3: 2.15 usec per loop

关于c++ - 打开文件和关闭文件语句定位: best practice,的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376920/

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