字节/短整型 Vs int 作为循环计数器变量

2022-09-04 19:20:16

当我们知道确切的循环数时,使用字节/短字节作为计数器变量是一种好的做法吗?例如

for (byte i = 1; i <= 26; i++)

for (short i = 1; i <= 26; i++)

 for (int i = 1; i <=26; i++)

答案 1

它更有可能令人困惑而不是有帮助。大多数开发人员都希望看到一个值,而您的CPU中只有32位或64位寄存器,因此它不会改变程序的工作方式或执行方式。int

有很多选项可以工作并且对您的程序无害,但是您需要考虑一下糟糕的开发人员,他们必须阅读它并在以后理解它,这可能是您6个月后。;)

即使性能更快,也不值得进行这样的更改,除非它明显更快。请考虑此更改。

for (byte i = 1; i <= 120; i++)

for (byte i = 1; i <= x; i++)

你可能会认为这很好,因为200<2 ^ 8,它编译得很好,但它实际上是一个无限循环。

你必须问这个问题;如果以后引入 Bug 的风险增加,它必须快多少?

通常答案是,它必须以我测量的方式使我的整个程序明显更快(而不仅仅是你改变的那一点),我必须需要它明显更快。


答案 2

简短的回答:不。

长答案:否,因为 CPU 已针对整数运算进行了优化。如果使用字节或短整型,CPU 必须经常将其转换为整数并转换回来,通常是通过应用位掩码。