我仔细阅读了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周期,但您会失去源代码的代码可读性。但不要担心,今天的编译器非常聪明,它在编译时做到了这一点,这个过程被称为代码优化。