【发布时间】:2012-02-07 14:50:33
【问题描述】:
全部,
我有每秒调用多次的 C 函数,因为它们是 PIC18 板上控制循环的一部分。这些函数具有只需要方法范围的变量,但我想知道是否有任何开销不断分配这些变量与使用全局或至少更高范围的变量。 (如果性能要求不使用方法局部变量,则考虑对结构进行类型定义以从更高的范围传递以避免使用全局变量)
这里有一些很好的话题涵盖了这个主题,但我还没有看到一个明确的答案,因为大多数宣扬的最佳实践都是我同意的,只要每微秒都没有性能提升,我就会遵循这些最佳实践.
一个线程提到使用文件范围的静态变量代替全局变量,但我不禁想知道是否有必要这样做。
大家怎么看?
【问题讨论】:
-
你应该做一些分析。
-
要么做一些分析,要么至少阅读生成的汇编代码来弄清楚访问是如何表达的。
-
您必须问自己的是:这里或那里的几个 CPU 节拍对我的应用程序有影响吗?如果是这样,那你到底为什么要为这个项目选择人类历史上代码效率最低的 CPU 之一呢?这有点像买了一个便宜的 VM 甲壳虫,然后坚持在它上面放一个扰流板。
-
@JohanLundberg:8 位嵌入式系统的分析?甚至有任何工具吗?不,不要分析,使用示波器。如果您正在编写 MCU 应用程序并且没有示波器,那么程序性能是您最不关心的问题。
-
@Lundin,对 - “你应该做一些测量”。并弄清楚您是否真的会从优化中受益。
标签: c performance global-variables pic pic18