Vea*_*cus 1 c++ bit-manipulation
我正在开发一个程序,它可以生成很多类的实例(数百万).这个课很简单,只有3个花车.
现在这些浮点数可以存在的范围存在于0和1(颜色值)之间,并且通常它们是非常简单的值(1,0.5,0.25,0).为了节省内存,我认为制作这些类的池会最好用,因为它们只用于只读环境,所以它们可以在多个地方共享指针样式.
我认为将这些对象存储在unordered_map中会起作用,并且会使用uint64_t的键值.键的值将是每个浮点的高21位.
是否有一种简洁的方法来获取每个浮点数的高21位并将它们全部放在一个64位整数中?
或者这只是一个愚蠢的方式来解决这个问题?我不确定这是否有效或有利,但如果它有效,我将把它扩展到程序中的其他类(位置值,形状等可能最终共享值)
您应该为每个颜色值(24位颜色)使用一个字节.这将使你的每个类占用空间的1/4(填充1/3).这是最高质量的格式,无论如何都会呈现屏幕的每个像素.
编辑:如果您想节省更多空间,可以让类以RGB565格式存储16位颜色.如果你需要进行颜色查找,那么你可以使用它会产生的短路作为关键.