【发布时间】:2011-06-10 19:08:02
【问题描述】:
我正在开发一个生成大量类实例(数百万)的程序。这个类非常简单,它只包含 3 个浮点数。
现在这些浮点数可以存在的范围介于 0 和 1(颜色值)之间,并且通常它们是非常简单的值(1、0.5、0.25、0)。为了节省内存,我认为将这些类组成一个池效果最好,因为它们只在只读情况下使用,因此可以在多个地方共享指针样式。
我认为将这些对象存储在 unordered_map 中会起作用,并且会使用 uint64_t 的键值。键的值将是每个浮点数的高 21 位。
有没有一种简洁的方法来获取每个浮点数的高 21 位并将它们全部放在一个 64 位整数中?
或者这只是一种愚蠢的方式来解决这个问题?我不确定这是否有效或有利,但如果它有效,我将把它扩展到程序中的其他类(位置值、形状等可能最终共享值)
【问题讨论】:
-
3 个浮点数在大多数平台上占用 12 个字节。算一算。除非您在嵌入式平台上工作,否则可能不值得。
标签: c++ bit-manipulation