在.NET之前的世界中,我总是假设int比字节快,因为这就是处理器的工作方式.
现在,即使字节可以工作,也可以使用int,例如当byte是存储在数据库中的时候
问题:.NET如何从性能/内存的点视图处理字节类型与int.
更新:感谢您的输入.不幸的是,没有人真正回答这个问题 .NET如何处理byte与int.
如果性能没有差异,那么我喜欢chills42如何把它:int for arithmetics bytes for binary我将继续这样做.
Ale*_*lli 12
你的pre -.NET假设是错误的 - 周围总是有很多计算机系统,虽然名义上是"字节可寻址的",但是必须通过读取一个完整的字来设置一个字节,将其屏蔽掉以改变一个字节把它写下来 - 比设置一个完整的单词慢.它取决于处理器和内存连接方式的内部结构,而不是程序员可见的体系结构.
无论是在.NET还是本机代码中,首先关注的是使用数据作为应用程序的语义正确,而不是试图双重猜测计算机系统的架构师 - "过早优化是编程中所有邪恶的根源",引用Knuth引用霍尔.
你在谈论一个字节的存储空间或操作吗?如果是存储空间,是的,它占用的空间少于int(1个字节对4个字节).
就字节的算术运算而言,我没有原始数字,实际上只有一个分析器可以给你.但是,您应该考虑在原始字节实例上不进行算术运算.相反,它们被提升为int,然后操作在int上完成.这就是你必须显式地转换如下操作的原因
byte b1 = 4;
byte b2 = 6;
byte b3 = b1 + b2; // Does not compile because the type is int
Run Code Online (Sandbox Code Playgroud)
所以在一般情况下我认为可以肯定地说int上的算术运算比一个字节的运算速度快.仅仅因为在字节情况下,您支付类型促销的(可能非常小的)成本.
好的,我刚刚打开了反汇编窗口。除了常规的“mov byte”之外什么都没有
因此,.NET/CLR 不会对此添加任何内容。所有算术运算都是针对 int 值进行的,因此 bytes 和 int 之间没有区别。
归档时间: |
|
查看次数: |
5526 次 |
最近记录: |