Kam*_*rey 0 .net memory optimization
我有下一个实例化大约4000万次的类,它的所有实例占所有进程内存的80%左右(超过15GB).
class MyClass
{
String Field1
String Field2
String Field3
int Field4
int Field5
float Field6
SomeEnum Field7
Boolean Field8
Boolean Field9
Boolean Field10
Byte Field11
Byte Field12
}
Run Code Online (Sandbox Code Playgroud)
我想以某种方式优化这个类,但不知道在这种情况下我能做些什么.我想将布尔字段组合到一个字节或自定义字段对齐,但不确定它是否更糟,如果它不会破坏某些东西.还尝试将其更改为结构,但在现有代码中出现性能问题而没有显着改进.
那么,在这里可以做些什么来减少内存使用而不会严重降低性能?
此代码主要在x64服务器上运行,x32仅在开发中运行.
编辑:
这是一种假设非常快速返回依赖于所有这些数据的结果的服务.这里速度非常快,约为20ms-150ms.因此,对所有数据进行散列和排序,并且此类中的每个字段几乎在每个服务请求中使用.这可能是设计不好的东西,但设计在这里不是问题,我现在无法从头开始重新设计它.
当然你可以把所有布尔变成一个领域.将枚举和字节值组合到一个字段中可以节省内存,因为字段通常是对齐的,因此占用更多空间.在.NET中,还有控制成员对齐的属性.
但最后你有一个设计问题.最好尝试重新设计您的应用程序.所有数据值是否真的需要同时存入内存?你可以把不需要的部分放到硬盘上,只在真的需要时检索它吗?
告诉我们更多关于应用程序的功能,以便我们为您创建一些想法.
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |