内存规划-把握-片面指南-Rust (内存xa)
整型,浮点型,struct,vec!,enum
本文是对内存规划的学习与记载
structA{a:i64,b:u64,}structB{a:i32,b:u64,}structC{a:i64,b:u64,c:i32,}structD{a:i32,b:u64,c:i32,d:u64,}fnmn(){println!("i32类型占的内存空间为:{}字节",std::mem::size_of::<i32>());println!("i64类型占的内存空间为:{}字节",std::mem::size_of::<i64>());println!("[i64;4]占的内存空间为:{}字节",std::mem::size_of::<[i64;4]>());println!("结构体A占的内存空间为:{}字节",std::mem::size_of::<A>());println!("结构体B占的内存空间为:{}字节",std::mem::size_of::<B>());println!("结构体C占的内存空间为:{}字节",std::mem::size_of::<C>());println!("结构体D占的内存空间为:{}字节",std::mem::size_of::<D>());}
输入
i32类型占的内存空间为:4字节i64类型占的内存空间为:8字节[i64;4]占的内存空间为:32字节结构体A占的内存空间为:16字节结构体B占的内存空间为:16字节结构体C占的内存空间为:24字节结构体D占的内存空间为:24字节
没啥好说的,和Go一样,struct会存在内存对齐/内存填充(8字节对齐)
D是由于编译器会优化内存规划,字段顺序重排
Rust中的Vec!和Go中的slice差不多,都是占24Byte,三个字段
structSimpleVec<T>{len:usize,//8capacity:usize,//8data:*mutT,//8}fnmain(){println!("Vec!类型占的内存空间为:{}字节",std::mem::size_of::<SimpleVec<i32>>());println!("Option<i64>类型占的内存空间为:{}字节",std::mem::size_of::<Option<i64>>());}
Vec!类型占的内存空间为:24字节Option<i64>类型占的内存空间为:16字节
然而关于enum类型,
会有一个tag字段,uint64,来标志变体,是None值还是Some值
structOption{uint64tag;//占8字节SomeNonei64;//实践寄存的数据}
structSimpleVec<T>{len:usize,//8capacity:usize,//8data:*mutT,//8}enumData{//tag,uint64,8字节I32(i32),//4字节,但需内存对齐到8字节?F64(f64),//8字节Bytes(SimpleVec<u8>),//24字节}fnmain(){println!("Data这个Enum类型占的内存空间为:{}字节",std::mem::size_of::<Data>());}
输入为:
Data这个Enum类型占的内存空间为:32字节
Rust的enum相似C++std::variant的成功(大抵是用union成功的)
union的内存大小是其成员中最大的那个成员的大小,
相似的,关于Data这个Enum类型,会选用最大的那个成员的大小
所以24+tag的8字节,最终为32字节(tag在这里就用来标识其为i32,还是f64,或许是Vec)
嵌套的枚举:
structSimpleVec<T>{len:usize,//8capacity:usize,//8data:*mutT,//8}enumData{//tag,uint64,8字节I32(i32),//4字节,但需内存对齐到8字节?F64(f64),//8字节Bytes(SimpleVec<u8>),//24字节}typeOptData=Option<Data>;fnmain(){println!("OptData这个Option类型占的内存空间为:{}字节",std::mem::size_of::<OptData>());}
输入:
OptData这个Option类型占的内存空间为:32字节
由于编译器会对嵌套的枚举类型启动优化,会将其tag开展,把多个tag合在一同了,相似上方:
开展变成一个枚举(None是uint64,能标识十分多信息)
typeOptData=Option<Data>;enumOption{Some,None,}enumOptData_{I32(i32);F64(f64);Bytes(SimpleVec<u8>),None}
元组tuple
rust中的元组大小固定吗?
在Rust中,元组的大小是固定的。这里解释一下元组大小固定的含意:
举个例子:
lettuple=(1,2.0,"three");
这里元组蕴含一个i32,一个f64和一个字符串。编译器会预先知道:
这20字节的内存在编译时就已调配,运转期不会扭转。
假设后续试图给这个元组增加或缩小元素,编译都会报错。
所以说,元组的大小和内容是固定的,这是Rust成功方式的一局部。
更多可参考Rust数据内存规划
参考资料
Rust内存规划:
[2]Rust数据内存规划:
玩rust买内存好还是固态硬盘好
要回答这个问题,需要根据你的当前的具体配置来决定。 单纯讲硬件对游戏的影响,内存的重要性肯定要比硬盘高。 如果你的内存较小,那么首先应该扩充内存,对游戏的流畅运行肯定会有更积极的帮助。 如果你的内存已经够大,完全可以满足游戏需要,那么再添加内存是没有意义的,此时更换固态硬盘,游戏的载入速度会有显著提高,会有更优良的游戏体验。
win7能不能玩rust详细介绍
rust2K配置要求是内存8GB以上CPU,IntelCore230GHz或AMD同性能CPU硬盘2GB以上空间,显卡nVidiaGeForce9800GT或ATI同性能显卡,系统WinXP或VISTA或Win7或Win8,声卡DirectSound兼容声卡rust2K配置的特点 随着DLSS20技术的。 rust腐蚀游戏最低配置要求处理器2GHz的内存4GDirectX90推荐配置处理器3GHz的内存8GDirectX110硬盘2G以上是rust的要求配置处理器最低要求主频20G以上,你的是双核22主频,建议把内存升级到4G,或者改。 配置 处理器3 GHz的 内存8 G DirectX110 硬盘2 G 以上是rust的要求配置 处理器最低要求主频20G以上,你的是双核22主频,建议把内存升级到4G,或者改成 XP系统 ,因为Win7占用你的系统资源太大了。 可以,我的就是win7的,可以玩。 如果不知道自己电脑配置的可以下载鲁大师,在里面检测一下自己的电脑配置Rust是采用Unity 3D制作的第一人称僵尸生存网络游戏,游戏是采取PVP,玩家看见其他玩家可以选择结伴无视或是直接杀了对方,抢夺其身上的任何资源。 这配置很弱,很老的配置了 肯定不能玩,会非常的卡 楼主还是换个更好点的配置在玩吧 cpu,内存和显卡适量的都要换稍微好点的 而且还要用加速器去玩 因为延迟也会很高,会非常卡 像我是用玲珑国际网游加速器去玩的 才。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。