【发布时间】:2016-01-06 12:09:42
【问题描述】:
我正在寻找某种类型的映射或文件,以说明计算机在 Fortran 中运行某些内在函数和循环所必须完成的工作量。例如:运行基本 if-then 语句检查布尔值(或逻辑值)所需的决策数量。以及计算加法和乘法等基本算术函数需要多少决策。
我知道在 Assembly 中它通常被称为 OpCode Map,但我意识到时间会根据计算机的速度而有所不同,因此我正在寻找更类似于算法的“Big O”表示法的东西。
我的主要问题是我正在用 10000 多个时间步长映射粒子的位置,并将信息写入文件,然后绘制轨迹图。我很想知道这个程序中的具体时间延迟是多少,即 if 语句本质上是否比循环做出更多的决定?我想让我的代码尽可能地模块化和语法简单,而不会使程序(尤其是将来)在超级计算机上运行通常需要 4 个小时以上。
【问题讨论】:
-
答案可能是“所有内在函数的 O(1)”。你有任何明显不正确的例子吗?如果是,请将其包含在您的问题中。这将阐明您的需求。
-
用一个体面的优化编译器代码用做同样事情的 do 循环替换 if 语句将生成执行相同的机器代码,如果不是完全相同的话。我建议不要担心单个语句的成本,而是担心您使用这些语句实现的算法的大 O 成本。
标签: fortran big-o fortran90 fortran77 opcode