【发布时间】:2011-05-20 12:30:30
【问题描述】:
我有一个数据结构,其中存储一个 24 位宽的值。我有很多这些对象。
为了最小化存储成本,我从 2^24 个可能的值中计算出 2^7 个最重要的值,并将它们存储在一个静态数组中。因此,我只需在我的数据结构中为该数组保存一个 7 位索引。
问题是:我得到了这些 24 位值,我必须即时将它们转换为我的 7 位索引(无法进行预处理)。计算基本上是搜索 2^7 个值中最适合的一个。显然,对于大量对象,这需要一些时间。
一个明显的解决方案是创建一个长度为 2^24 的简单字节映射数组。但这需要 16 MB 的 RAM。太多了。
对 16 MB 数组的观察:平均 31 个连续值是相同的。不幸的是,还有许多不同的连续值。
您将如何实现从 24 位值到 7 位索引的这种转换,以尽可能多地节省 CPU 和内存?
【问题讨论】:
-
你在编程什么,16MB太多了?电话?
-
@Steve 如果 16MB 不是太多,他一开始就不会这样做 :)
-
@Karl:如果他正确认为 16MB 太多了,那么他一开始就不会这样做。但是,如果他弄错了,他会:-) 这就是为什么这是评论,而不是答案。其实我的问题是修辞。我不需要答案,只是有时人们(包括我)不会质疑我们的限制,直到其他人提出质疑。
-
如果你有“最重要”的价值观,为什么不把所有不重要的价值观都扔掉?
-
@Steve:是的,它在手机上 :-)
标签: algorithm performance search data-structures mapping