2011-06-10 129 views
1

我正在研究生成大量类(百万)实例的程序。这个课程非常简单,只需要3个花车。浓缩3漂浮到uint64_t

现在这些花车可以存在的范围在0到1之间(颜色值),并且通常它们是非常简单的值(1,0.5,0.25,0)。为了节省内存,我认为让这些类的池最好,因为它们只用于只读环境,所以它们可以在多个地方共享指针样式。

我认为将这些对象存储在unordered_map中会起作用,并且会使用uint64_t的键值。密钥的值将是每个浮点数的高21位。

是否有一种简洁的方式来获得每个浮点数的高21位,并将它们放在一起成为一个64位整数?

或者这只是一个愚蠢的方式去做这件事?我不确定这是否有效或有利,但如果它有效,我将把它扩展到程序中的其他类别(位置值,形状等可能最终共享值)

+4

3个浮点数在大多数平台上占用12个字节。算一算。除非你在嵌入式平台上工作,否则可能不值得。 – 2011-06-10 19:11:41

回答

6

您应该为每个颜色值(24位颜色)使用一个字节。这将使你的每个班级占用1/4(填充1/3)空间。无论如何,这是屏幕上每个像素的最高质量格式。

编辑: 如果你想节省更多的空间,你可以让这些类存储RGB565格式的16位颜色。然后,如果您需要进行颜色查找,则可以使用这将做出的短小,作为关键。

+0

这似乎比我在做的事更容易! – Veaviticus 2011-06-10 19:23:36

5

或者这只是一个愚蠢的方式去做这件事?

是的。

保持简单。