C#定义中的常数公式是否有效率问题



我仔细阅读了cpufreq_governor.h中的一些内核源代码,看到了以下内容:

/*
* The polling frequency depends on the capability of the processor. Default
* polling frequency is 1000 times the transition latency of the processor. The
* governor will work on any processor with transition latency <= 10ms, using
* appropriate sampling rate.
*
* For CPUs with transition latency > 10ms (mostly drivers with CPUFREQ_ETERNAL)
* this governor will not work. All times here are in us (micro seconds).
*/
#define MIN_SAMPLING_RATE_RATIO         (2)
#define LATENCY_MULTIPLIER          (1000)
#define MIN_LATENCY_MULTIPLIER          (20)
#define TRANSITION_LATENCY_LIMIT        (10 * 1000 * 1000)

将最后一行改为不是更有效吗

#define TRANSITION_LATENCY_LIMIT        (10000000) /* (10 * 1000 * 1000) */

将最后一行改为是否更有效

#define TRANSITION_LATENCY_LIMIT        (10000000) /* (10 * 1000 * 1000) */

很可能不会有任何区别。

任何一个半吊子的编译器都应该能够在编译时计算10 * 1000 * 1000

问问自己:

你的建议中有多少个零(或者备选方案,数字是多少(

#define TRANSITION_LATENCY_LIMIT (10000000)

Tiring任务。这更直观、更容易(也更容易维护(:

#define TRANSITION_LATENCY_LIMIT (10 * 1000 * 1000)

此外,(10 * 1000 * 1000)是表示10微秒(每秒一百万分之一(1000*1000(的10倍(的更方便的方式

此外,效率在这里并不重要,因为它将由编译器计算。

毫无疑问,您可以更改它并获得更高效的代码,因为与加法和减法相比,乘法需要更多的CPU周期,但您会失去源代码的代码可读性。但不要担心,今天的编译器非常聪明,它在编译时做到了这一点,这个过程被称为代码优化。

最新更新