|
|
实验性能优化 MOD (Experimental Performance)Github |相关wiki |源站链接支持: fabric该模组在几个方面提高了 Minecraft 的性能。
内存分配
该模组通过几种方式改进了 Minecraft 的性能。在内存分配方面有着显著的优化。
内存分配
有些类可以非常密集,它们占用大量内存。这是一个问题,因为您的计算机只能将 64 字节装入处理器的缓存行中,因此超过 64 字节的任何内容都需要分成多行。这可能会根据调用的操作而大大减慢操作速度。
显然,最好的解决方案是确保没有超过 64 字节的内容,但这说起来容易做起来难,因为这有多个不利因素,尽管在我优化的情况下,这些不利因素并不重要。
区块内存分配
区块非常密集,占用 80 字节内存。我们使用一些 hacky fabric-ASM 方法从 Chunk 类中删除变量并重定向所有调用。这使得我们可以将区块缩小到 64,这在某些计算机上可以使大多数区块操作速度提高 0.25 倍!
方块内存分配
方块也非常密集,占用 72 字节内存。我们像处理区块一样处理方块,将一些东西移到 BlockInfo 类中并减少类的权重。这不仅使大多数方块现在可以更快地传递,而且还防止一些方块超过 128 字节,这将需要 3 个缓存行。
实体内存分配
与区块和方块不同,实体是一团糟。它占用 272 字节,即 5 个缓存行。难怪实体如此卡顿 xD 我已将其优化到 4 个缓存行,尽管进一步优化将破坏更多的模组兼容性,而我没有时间来修复。如果该模组在某个时候增长到足够大,我可能会重写整个实体类并提供您想要的值的 API。
为什么 Mojang 不这样做?
他们有点在做这个吧?当进行我的优化时,我注意到 Mojang 实际上已经做出了我正在进行的相同性能改进。比如 LevelInfo,尽管那是几年前的事了?Mojang 看起来并不太在乎性能,他们做出了一些非常奇怪的性能改变,但似乎从未真正关心过。一些类在过去几年里增长了很多,他们并没有注意到它们变得多么密集。但这没关系,因为我在这里可以提供帮助。
猫鼠游戏
性能很难获得,这是一个非常复杂的难题,需要您以非常详细的方式了解其中的每个部分。简而言之,计算机并不简单。它们尽力让程序员不去考虑它,尽管程序员应该始终考虑它。我在说什么?嗯,我通过该模组获得的性能是有代价的,额外的调用和内存分配。我只是在优化游戏内的结构,使其与计算机更加流畅和快速地运行,尽管这需要计算机记住更多的东西。不幸的是,在大多数情况下,您不会注意到这个成本,因为性能优势大大超过了损失。
实验性的!!!
似乎我需要继续强调。该模组是高度实验性的,并通过简单地移动类来执行一些超级可疑的 ASM 魔术以获得性能。请勿将其包含在模组包中,并且请勿就兼容性问题提出问题。该模组是作为一个概念验证而制作的,以查看我们是否可以通过减少缓存行中的类大小进一步优化 Minecraft。该模组显示了明显的性能优势,尽管它几乎没有经过测试,仍然需要大量的工作。我目前没有时间继续工作在这个模组上。
来自Modrinth所有游戏版本1.20.4所有类型fabricExperimentalPerformanceUnofficial 0.1.1experimentalPerformance-0.1.1.jar下载0.1.1#BetaUpdate to 1.20.4展开版本: 0.1.1支持游戏: 1.20.4类型:FabricBeta下载次数: 23,012全部版本
markdown_parsed
文章类型:收录
layui.use([\'form\'], function(){
var form = layui.form;
});
实验性能优化 MOD |
楼主
2025-8-10 17:38:31
回复(0)
收起回复
|