【发布时间】:2015-06-30 18:08:17
【问题描述】:
对于编程问题,我是 C 和 stackoverflow 的新手。我已经对我的问题进行了一些谷歌搜索,但我无法直接找到解决这个问题的信息。但是,我也可能对这个主题太陌生,以至于我不确定哪些术语甚至适合搜索。如果这是一个常见问题,我深表歉意。
我的程序正在执行科学计算。特别是,它主要涉及获取给定的坐标和给定的力,并根据一系列计算更新所有内容。为了获得结果,我将所有事情都运行了大约一百万次,所以我关心的是让它尽可能高效。特别是我发现我有 3 种类型的变量
- 恒定不变的变量
- 从迭代到迭代的临时变量 并且只是在计算中用作占位符
- 每次迭代都会更改然后执行的数据 到下一个
声明这些不同变量的最有效方法是什么?在我的天真中,我很想将所有东西都声明为全局变量,我很确定这对于 (1) 和 (3) 类型的变量是有意义的。但是对于类型(2)我不确定。如果我调用一个函数一百万次,并且每次调用它都会初始化一个临时变量,这是否比我有一个全局临时值而浪费更多时间?
【问题讨论】:
-
在我看来,您可以自己尝试这两个选项并对结果进行基准测试,您会得到明确的答案。
-
发布一些真实的代码怎么样?
-
无论您面临什么性能问题,很可能都不在于您如何存储变量,也不在于您如何调用函数。如果您在代码中使用分析器并发现您的每一行(例如 1000 行代码)大约需要总运行时间的千分之一,就会出现这种情况。但很可能情况并非如此。因此,请使用分析器来查明瓶颈,并修复仅该部分。
-
尝试将变量的生命周期限制为“刚好够用”
-
建议:你可能专注于错误的事情。您声明变量的方式/位置可能会对性能产生影响,但在您描述的情况下不太可能成为主要的性能因素。除非你有特定的理由认为它是。
标签: c++ c algorithm optimization