如果我有一个正弦 table,我应该在唤醒时将整个 table 查询到内存中吗?
If i have a sine table, should i query the whole table into memory on wakeup?
如果我有一个正弦 table,我是否应该在唤醒时将整个 table 查询到内存中?
或者我应该在每个 Sin(...)
调用时查询 table 一个吗?在 Sin(...)
的每次调用中访问数据库对我来说似乎有点昂贵,在唤醒时将整个 table 缓存到 C# 内存中是否是正确的做法?
仅使用 Math.Sin
将比访问数据库 快 很多,并且不会比使用内存中查找 table 慢很多。这并不是使用查找 table.
的好选择
但是,由于您评论说您只是在练习 - 是的,对于不经常(或从不)更改的小 table,您应该在启动时将其加载到内存中。
答案取决于您在程序的生命周期中需要计算 sin
的次数。如果您需要每小时执行一次或两次,查询数据库或将 table 存储在内存中没有区别。
如果您需要经常查询 sin
,将 table 存储在内存中会更有意义。不用说,内存中的查找 table 需要以一种有效的方式完成:运行 在紧密循环中对百万行 table 进行线性搜索可能会降低性能,甚至与数据库替代品相比也是如此。
如果我有一个正弦 table,我是否应该在唤醒时将整个 table 查询到内存中?
或者我应该在每个 Sin(...)
调用时查询 table 一个吗?在 Sin(...)
的每次调用中访问数据库对我来说似乎有点昂贵,在唤醒时将整个 table 缓存到 C# 内存中是否是正确的做法?
仅使用 Math.Sin
将比访问数据库 快 很多,并且不会比使用内存中查找 table 慢很多。这并不是使用查找 table.
但是,由于您评论说您只是在练习 - 是的,对于不经常(或从不)更改的小 table,您应该在启动时将其加载到内存中。
答案取决于您在程序的生命周期中需要计算 sin
的次数。如果您需要每小时执行一次或两次,查询数据库或将 table 存储在内存中没有区别。
如果您需要经常查询 sin
,将 table 存储在内存中会更有意义。不用说,内存中的查找 table 需要以一种有效的方式完成:运行 在紧密循环中对百万行 table 进行线性搜索可能会降低性能,甚至与数据库替代品相比也是如此。