将阵列类型更改为Int16会节省存储空间吗? 这是我第一次用C++中的大数据集工作。以前,我只想在数组中存储我想要的任何东西。因为我现在正在生成4000x4000的高度图,所以我想在我的程序突然消耗掉100MB(对于像我这样的独立玩家来说,这有点过高)之前,提高内存效率
我将以块的形式加载大部分数据,但因为我的程序在执行期间需要大量数据,所以最终还是会使用大型2D数组。我想找到一种方法让它们占用很少的内存 我的heightmap被设计成只接受小的整数值;可能小到足以装入将阵列类型更改为Int16会节省存储空间吗? 这是我第一次用C++中的大数据集工作。以前,我只想在数组中存储我想要的任何东西。因为我现在正在生成4000x4000的高度图,所以我想在我的程序突然消耗掉100MB(对于像我这样的独立玩家来说,这有点过高)之前,提高内存效率,c++,arrays,types,C++,Arrays,Types,我将以块的形式加载大部分数据,但因为我的程序在执行期间需要大量数据,所以最终还是会使用大型2D数组。我想找到一种方法让它们占用很少的内存 我的heightmap被设计成只接受小的整数值;可能小到足以装入Int8,但至少小到足以装入Int16。到目前为止,我一直在使用Int类型,在我的实现中是Int32类型 若我将2D数组和向量切换为Int16类型的集合,这会节省一半的存储空间吗?或者数组中的一个元素仍然会占用一个完整字节,而只是将这些未触及的位保留为零?从Int32切换到Int16(假设这与In
Int8
,但至少小到足以装入Int16
。到目前为止,我一直在使用Int
类型,在我的实现中是Int32
类型
若我将2D数组和向量切换为
Int16
类型的集合,这会节省一半的存储空间吗?或者数组中的一个元素仍然会占用一个完整字节,而只是将这些未触及的位保留为零?从Int32
切换到Int16
(假设这与Int16\t
相同)会将数组中的内存消耗降低一半(不考虑与可能动态调整大小的阵列一起进行的任何簿记)
另外,int16\u t
需要2个字节,int32\u t
需要4个字节。16\u t
意味着16位
没有未触及的位,只有那些您选择在运行时不使用的位。没有未使用的整数位。0s和1s为整数的值提供标识从
Int32
切换到Int16
(假设这与Int16\t
相同)(假设这与Int32\t
相同)将使阵列产生的内存消耗减少一半(不考虑与动态大小的阵列一起进行的任何簿记)
另外,int16\u t
需要2个字节,int32\u t
需要4个字节。16\u t
意味着16位
没有未触及的位,只有您选择在运行时不使用的位。没有带整数的未使用位。0s和1s为整数的值赋予标识如果您谈论的是固定宽度整数类型,那么yes int16\u t保证为16位,没有填充位。您也可以验证这一点极低频:
std::cout << sizeof(int16_t[1000]) << " " << sizeof(int32_t[1000]);
std::cout如果您谈论的是固定宽度整数类型,那么肯定int16\t是16位,没有填充位。您也可以自己验证这一点:
std::cout << sizeof(int16_t[1000]) << " " << sizeof(int32_t[1000]);
std::我不确定你指的是哪个Int16
,但我希望它占用2个字节,不少于1个。你指的是什么“未触及位”呢?不确定你指的是哪个Int16
,但我希望它占用2个字节,不少于1个。你指的是什么“未触及位”?