首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >int列表的内存大小

int列表的内存大小
EN

Stack Overflow用户
提问于 2011-06-08 10:22:29
回答 6查看 5.9K关注 0票数 2

我有一个int列表,它以字符串的形式存储在DB中,字符串之间有逗号(4345,324,24,2424,64567,33...)。这个字符串可能会变得非常大,包含2-3,000个数字。它存储在数据库中,并且经常使用。

我在想,与其在每次需要它的时候都从数据库中读取它,不如在第一次加载之后将它存储在会话中。

一个包含1,000个int的列表需要多少内存?内存大小是否也取决于int本身,因此存储较大的int (234,332)比存储较小的int (544)需要更多的空间?

以内存空间为代价读取一次并存储在会话中是更好,还是经常读取并在渲染后从内存中丢弃更好。

谢谢你的建议。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-08 10:28:10

C#中的整数总是4个字节(不管是什么值)。因此,1,000个整数的列表大约是4,000个字节。我说大概是因为列表结构会增加一些开销。对于现代计算机来说,列表中的几千个整数应该不是问题。

票数 4
EN

Stack Overflow用户

发布于 2011-06-08 10:26:37

我想你走错方向了。在DB中存储可能是一个更好的选择,不是以逗号分隔的格式,而是作为int值的表。

将数据存储在会话中会显著降低可伸缩性。您可能会开始遇到OutOfMemory异常,并想知道为什么会发生这种情况。

所以我的建议是在需要的时候从数据库中读取,应用适当的索引,它会非常快。

你前进的方向是:

第1天,第1个用户-嗯,我应该在会话中存储数据吗,为什么不呢?应该很快就能奏效。无需查询数据库。也很容易做到。

第10天,第5天用户-需要存储另一个数据结构,也会将其放到会话中,何乐而不为呢?会话速度非常快。

第50天,10位用户-有一个控件很容易渲染,我将使它变得智能,渲染一次,然后放到会话中,将在每次回发时重用它。

第100天,20个用户-有时网站速度很慢,不知道为什么。但这只是偶尔的,所以没什么大不了的。

第150天,50个用户-它变得很慢。需要更好的CPU和内存?我们需要买一台更好的服务器,硬件太旧了。

第160天,60个用户-有了新服务器,运行速度更快。问题解决了。

第200天,100个用户--又慢了,为什么?这是最新最贵的服务器!

第250天,150个用户-应用程序池一直在重新循环。为什么?OutOfMemoryException?这是什么?我会用谷歌搜索。

第300天,200个用户-用户抱怨,我们失去了客户。我读到过关于WinDbg的文章,需要尝试使用它。

第350天,200个用户-如果我们开始使用网络负载均衡,我们可以购买两台服务器!买了服务器,试着使用,不工作,对会话有很多依赖。

第400天,200个用户-无法获得新客户,老客户就会离开。刚开始使用WinDbg时,发现几乎所有的内存都被会话占用了。

第#450,200个用户-开始一个名为“摆脱会话”的大项目。

第500天,250个用户-服务器现在太快了。

我在那里见过。基本上我的建议是--不要走这条路。

票数 8
EN

Stack Overflow用户

发布于 2011-06-08 10:28:39

我不建议将其存储在会话中,因为这将导致内存压力。如果您将一系列整数绑定到一条记录,那么听起来就像是缺少多对一关系--为什么不使用原始表的外键将整数存储在一个单独的表中呢?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6273552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档