使用十六进制而不是十进制更有效率吗?
Is it more efficient to use hexadecimal instead of decimal?
你好,我正在使用 visual studio 2015 和 .net framework 4.5,如果它很重要,我的 Resharper 一直建议我从十进制数切换到十六进制数。这是为什么 ?如果我使用十六进制,是否有任何性能奖励?
在代码中以十进制和十六进制编写常量绝对没有性能差异。两者都将被翻译成完全相同的 IL,并最终 JITted 成相同的机器代码。
使用对您正在做的工作更有意义、在您的代码解决的问题的上下文中更清晰、更容易理解的表示。
源语言中的数字文字格式之间绝对没有性能差异,因为转换是由编译器完成的。从一种表示切换到另一种表示的唯一原因是代码的可读性。
使用十六进制文字的两种常见情况是表示颜色和位掩码。由于颜色表示通常在字节边界处拆分,因此解析数字 0xFF00FF
比 16711935
更容易:十六进制格式告诉您红色和蓝色分量已达到最大值,而绿色分量为零。另一方面,十进制格式需要您执行转换。
位掩码类似:当您使用十六进制或八进制表示时,很容易看出哪些位是 1,哪些位是 0。您需要学习的只是一个简短的 table 十六位模式,对应于 0
到 F
的十六进制数字。你可以立即看出 0xFF00
的高八位设置为 1
,低八位设置为 0
。对于大多数程序员来说,用 65280
做同样的事情要困难得多。
你好,我正在使用 visual studio 2015 和 .net framework 4.5,如果它很重要,我的 Resharper 一直建议我从十进制数切换到十六进制数。这是为什么 ?如果我使用十六进制,是否有任何性能奖励?
在代码中以十进制和十六进制编写常量绝对没有性能差异。两者都将被翻译成完全相同的 IL,并最终 JITted 成相同的机器代码。
使用对您正在做的工作更有意义、在您的代码解决的问题的上下文中更清晰、更容易理解的表示。
源语言中的数字文字格式之间绝对没有性能差异,因为转换是由编译器完成的。从一种表示切换到另一种表示的唯一原因是代码的可读性。
使用十六进制文字的两种常见情况是表示颜色和位掩码。由于颜色表示通常在字节边界处拆分,因此解析数字 0xFF00FF
比 16711935
更容易:十六进制格式告诉您红色和蓝色分量已达到最大值,而绿色分量为零。另一方面,十进制格式需要您执行转换。
位掩码类似:当您使用十六进制或八进制表示时,很容易看出哪些位是 1,哪些位是 0。您需要学习的只是一个简短的 table 十六位模式,对应于 0
到 F
的十六进制数字。你可以立即看出 0xFF00
的高八位设置为 1
,低八位设置为 0
。对于大多数程序员来说,用 65280
做同样的事情要困难得多。