1.加载速度慢主要跟硬盘速度关系比较大,毕竟瓶颈还是在数据从硬盘加载到内存的速度。如果是初次加载慢更是如此。如果是切换场景时或者加载其他资源时慢,换大容量的内存也有一定帮助。当然,这也跟操作系统有关,也跟游戏的代码有关。
举个例子,如果你这个游戏代码里有申请维护一个16G内存做成的缓存,你这个游戏有10个不同场景,每个场景资源4G. 然后你电脑总内存16G.
这时你打开游戏,游戏先加载第一个场景4G 这个时候就看硬盘速度了。加载完后存到缓存(此时缓存里4G)
你切换到第二个场景,又从硬盘加载4G,这个时候还是看硬盘速度。加载完后(此时缓存里8G)。
现在,如果你要切换回第一个场景,那直接缓存里读,很快,但是如果你切换到第三个场景,又得从硬盘里读,还是慢。
这个时候你的内存最多缓存16G(4个)场景,如果你在这4个场景里切换,会非常快,如果要切换到其他场景就非常慢。
如果你是32G的内存,那么可能申请32G的内存做缓存,则可以缓存8个场景(除每个场景第一次从硬盘加载时慢以外),这时候在8个场景里切换都非常快。如果你是64G的内存,申请40G内存做缓存就可以把场景全部装下,那除了每个场景第一次加载外,中间切换都非常快。
以上只是理论状态下,实际上一般不会这样。16G的内存还得分给系统一部分,不可能能做出16G的缓存,而且很多程序基本加载时new,用完就delete了。也有new完不delete,等程序退出时一起delete的,这就涉及到swap了(windows上也叫分页文件,交换区)。
举个例子,你的内存还是16G,但你不申请16G的缓存。加载一个场景你就new 4G内存,到最后你new了10个场景40G也不释放,看起来好像缓存了40G,然而系统判断别的程序和系统自己占了8G内存,放不下你40G了,于是你只有8G存在是物理内存里,省32G对于程序代码来说像是缓存在了内存里,实际被操作系统写到硬盘上的分页文件里了,这个时候还是受限于硬盘速度。
以上都是理想和简化后的原理,实际牵涉到操作系统的内存管理机制。总之就是加载的瓶颈主要在硬盘速度上,哪怕你200G的内存,加载的时候该慢还是慢,只不过已经加载过并存在内存里的数据在再次切换使用时会比较快。
2.另外说说3000频率和4000频率的事情,在带宽等其他条件不变的情况下(同样CPU主板和内存位宽等,只考虑频率不一样),举个例子:
同样的一段距离拉货,每辆车拉载重量也一样,比如1吨
A有三辆车(代表带宽,几辆不重要,是固定值),一年能拉3000次
B有三辆车(代表带宽,几辆不重要,是固定值,只要跟A一样就行了),一年能拉4000次
在距离和每辆车载重量相同的情况下,显然B拉的多,一年4000吨。
那么如果货量总的就是4000吨,那B一年就拉完了,A要4000/3000 = 1.3333年才能拉完
那么多余内存来说,一个场景4G,如果4000频率的1s就读完了,那么3000的就需要1.3333s。
但实际上cpu与内存的数据交换速度非常快,现在DDR4的双通道50GB/s应该是差不多的,假如一个游戏150G,如果你内存里能全装下的话,3s能全读完一遍了,如果4000频率的3秒读完的话,3000频率最多也就4秒,差距不大也就1秒,而再细分到切换一个场景4G的数据的话,就是1*(4/150)=0.03秒,基本感觉不出来。但现在的固态硬盘据说最快的M2(nvme)接口最快读取也就3GB/s,还不知道是不是真的,150G他要都50秒,这感觉应该是很明显了。
当然就算现在最快的固态能达到3G/s,那应该只是读一个大文件这样的情况,一个游戏分为多个文件,文件数越多,单个文件越小,读取速度越慢,慢到几百兆每秒都会有可能,假如500兆,而游戏常驻内存大小10G,那都需要20秒,不知道组raid 0 会不会好些,前提是你pcie够用的话。
以上都是理论上的一些东西,最后的呈现结果都是多方因素决定的,如果CPU被别的程序占的差不多了,你内存就算给出50G/s的速度CPU处理不过来你也得等着,跟开车似的,哪怕你跑车极速300,堵车的时候一样得乖乖等着。