比较来自世界各地的卖家的域名和 IT 服务价格

我应该使用 byte 或者 int?

我记得我读到了更好的地方 /在表现方面/ 使用 Int32, 即使你只需要字节。 它属于 /想必/ 仅在您不关心存储时的情况。 这是真的吗?

例如,我需要一个将包含一周日期的变量。 而且我知道


int dayOfWeek;


或者


byte dayOfWeek;


EDIT

:
伙计们,我知道 DayOfWeek 清单。 问题是不同的。
已邀请:

八刀丁二

赞同来自:

通常是,32位整数会更好地工作,因为它已正确对齐您自己的指示。 CPU. 只有当您真正需要保持类似的内容时,才必须使用数字类型的数字。

君笑尘

赞同来自:

您必须使用列表 DayOfWeek, 除非没有理由没有这样做的原因。


DayOfWeek day = DayOfWeek.Friday;


要解释,因为我减少了投票:

正确的

你的代码几乎总是更重要的。 , 比

表现

, 特别是在我们谈论这么少的差异的情况下。 如果使用列表或类代表数据语义 /无论是列表 DayOfWeek, 或其他枚举,或类 Gallons 或者 Feet/, 使您的代码更加理解或维持维护,它将帮助您到达您可以安全地优化的程度。


int z;
int x = 3;
int y = 4;
z = x + y;


这可以编译。 但是没有办法发现它是否会合理或不合理。


Gallons z;
Gallons x = new Gallons/3/;
Feet y = new Feet/4/;
z = x + y;


它不会被编译,甚至看起来,显然,为什么不 - 甘鸽

它没有任何意义

.

君笑尘

赞同来自:

我的默认位置是尝试使用强类型来向值添加限制。 - 你提前了解他们的地方。 因此,在您的示例中,可能优选使用
byte dayOfWeek

, 因为它更接近所需的值范围。

这是我的推理; 在日期存储和通过的榜样。 一年 - 在考虑系统的其他部分时,包括 SQL Server DateTimes, 限制 1753 到 9999 /注意 C#'s 可能的范围 DateTime 是不同的!/ 因此, a
short

涵盖了我可能的价值观,如果我试图传达一些东西,编译器会在编译代码之前警告我。 不幸的是,在这个特殊的例子中,属性 C# DateTime.Year 多窝白 int - 因此,如果我需要通过,迫使我带来结果,例如,
DateTime.Now.Year

在我的功能中。

这个初始位置是由于关于涉及数据的长期存储的考虑因素 "数百万行" 和磁盘空间 - 即使是便宜的 /发布和运行时会更便宜 SAN 或类似的东西/.

在另一个例子中 DB 我将使用较小的类型,如 byte /SQL Server tinyint/ 搜索 ID, 在那里,我相信那里不会有这么多类型的搜索,直到它 long /SQL Server bigint/ 为了 id, 可能会更多的记录。

那么,我的经验规则:

如果可能,首先检查正确性。 使用 DayOfWeek 在你的例子中,当然 :/

因此,使用编译器安全检查选择适当的大小的类型,在可能的时间内为您提供错误;

..但是补偿了性能和简单的极端要求,特别是在没有涉及的长期存储库或我们正在考虑搜索表的位置 /字符串数量低/, 而不是交易 /高排/.

符合清晰度存储的兴趣 DB 往往不会尽可能快地拒绝,以减少列的类型 bigint 到较小的类型。 由于缩小到单词的边界,并且由于页面大小的内部问题,这两者都发生在一起。 DB. 但是,您可能在您的情况下保持每个数据元素 DB, 也许在改变时保持历史记录,并节省了备份副本和日志备份副本的最后几天。 因此,节省了几个百分比的存储需求将具有长期存储成本节省。

当内存中的字节容量相比,我从未个人面临问题 ints 有一个问题,但我花了时钟和时间来重新分配磁盘空间并完全停止生活服务器的工作,因为没有一个人可以监控和管理这些事情。

莫问

赞同来自:

System.DayOfWeek

http://msdn.microsoft.com/en-u ... .aspx
使用大部分时间 int. 不是为了性能,但为简单起见。

莫问

赞同来自:

使用 int. 计算机内存已解决 "words,", 这通常有一个长度 4 字节。 这意味着如果您希望从内存中获取一个数据字节, CPU 必须从中提取整个4字节的单词 RAM, 然后执行一些额外的步骤来隔离您感兴趣的一个字节。 如果你考虑表现,那么 CPU 提取整个词并与他结尾会更容易。

事实上,在所有现实中,在生产力方面都不会发现它们之间的任何区别。 /除了罕见,极端情况/. 这就是我喜欢使用的原因 int 反而 byte, 因为你可以在没有罚款的情况下存储大数字。

江南孤鹜

赞同来自:

从存储角度来看,使用
byte

, 在表现方面 cpu-
int

.

要回复问题请先登录注册