fil*_*nic 1 c# memory performance struct unix-timestamp
我想在内存中存储时间戳(数十亿个值)。主要操作是读到内存和从内存中读取,不需要 DateTime 特定的方法。为了与其他服务兼容,我想以秒为单位使用 unix 时间戳格式(以避免转换)。
所以,我想使用特殊的数据类型,而不仅仅是long
在我的代码中。
我发现我不能为简单的数据类型(如 )“制作别名” long
,我可以在程序集之外完全使用它。
因此,我想将 Timestamp 实现为具有单个long
字段和一些方法(例如,ToDateTime、某些运算符重载等)的结构,因为结构是“非引用数据类型”并且它们保留了我的记忆。
制作结构是个坏主意吗?
任何使代码成为强类型的替代方法,重新定义Method (long, long)
为Method (Timestamp, StepCount)
DateTime 内部使用Ticks作为值。几乎所有其他函数调用和属性都只是对 Ticks 值的重新解释。
滴答比秒更精细,达到 7 个数量级。
“一个滴答声代表一百纳秒或百万分之一秒。一毫秒有 10,000 个滴答声,或一秒内有 1000 万个滴答声。
此属性的值表示自公历 0001 年 1 月 1 日午夜 12:00:00 起经过的 100 纳秒间隔数,代表 MinValue。”
然而,内部时钟实际上并不那么精确。DateTime.Now
可能仅每 ~30 毫秒或更短时间更新一次。要进行精确测量,您必须改用StopWatch 类。
当然,对于数十亿的价值,是否有记忆真的成为一个问题。.NET 对象大小、内存和数组大小限制可能会妨碍。将这些值存储在数据库中并只查看列表的一部分可能会更好。在查询中使用重过滤。
归档时间: |
|
查看次数: |
120 次 |
最近记录: |