Table of Contents
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
图块生成器
TShock 内置了两个图块生成器,它们用不同的系统替换了 Terraria 的图块数据存储。此外,一个主要的插件开发者提供了额外的图块生成器集合。对于开发者来说,这些生成器实现了 ITile 接口并将自己注册为图块生成器。ITile 由 OTAPI 提供。
默认情况下,Terraria 以相对未优化的方式存储图块。从理论上讲,这是访问图块最快的方式,但这是以内存为代价的。如果您运行的 Terraria 服务器内存有限,您可能希望回收内存并改为交换处理能力。这就是这些生成器的作用。
Constileation
Constileation 是 TShock 内置的最新图块生成器。它比 HeapTile 更快,并且节省内存。它每个图块使用 14 字节。使用 -c 或 -constileation 命令行参数启动您的 TShock 服务器来使用此生成器。
HeapTile
HeapTile 是 TShock 内置的最早的图块生成器之一。同样,它提供内存优势,但与 Constileation 和 Tiled 相比真的很慢。使用 -heaptile 命令行参数启动您的 TShock 服务器来使用此生成器。
Tiled
thanatos 开发的 TShock 的 tiled 插件 提供了额外的图块生成器,包括他们的 1d、2d 和 struct 生成器。我们敦促您查看并比较所有图块生成器,找到最适合您需求的生成器。Tiled 试图带来两全其美的效果,提供既能最小化内存使用又能提供适度性能的图块生成器。
图块生成器基准测试
@SignatureBeef 对各种图块生成器进行了基准测试。这里转载了 TSAPI PR #231 中的一些运行示例。对于这些测试,以下是生成器:
Stock是 Terraria 服务器的原始配置。Heap是HeapTileConstileation是Constileation1d来自 Tiled2d来自 TiledStruct来自 Tiled
基准测试:每个生成器对小世界中的每个图块调用 .active 的速度
| Method | Mean | Error | StdDev | Ratio | RatioSD |
|---|---|---|---|---|---|
| Active_Stock | 31.78 ms | 0.456 ms | 0.426 ms | 1.00 | 0.00 |
| Active_Heap | 122.07 ms | 2.413 ms | 2.370 ms | 3.84 | 0.09 |
| Active_Constileation | 40.41 ms | 0.575 ms | 0.510 ms | 1.27 | 0.02 |
| Active_1d | 52.94 ms | 0.731 ms | 0.648 ms | 1.66 | 0.03 |
| Active_2d | 54.96 ms | 1.083 ms | 1.064 ms | 1.73 | 0.05 |
| Active_Struct | 61.59 ms | 0.651 ms | 0.544 ms | 1.93 | 0.03 |
基准测试:生成器对小世界中的每个图块发布和存储自己数据的速度
| Method | Mean | Error | StdDev | Ratio | RatioSD |
|---|---|---|---|---|---|
| AssignFromSelf_Stock | 34.30 ms | 0.486 ms | 0.454 ms | 1.00 | 0.00 |
| AssignFromSelf_Heap | 267.03 ms | 3.455 ms | 3.062 ms | 7.79 | 0.15 |
| AssignFromSelf_Constileation | 42.30 ms | 0.664 ms | 0.621 ms | 1.23 | 0.03 |
| AssignFromSelf_1d | 208.46 ms | 2.823 ms | 2.640 ms | 6.08 | 0.10 |
| AssignFromSelf_2d | 242.42 ms | 4.669 ms | 6.234 ms | 7.11 | 0.24 |
| AssignFromSelf_Struct | 278.45 ms | 4.580 ms | 4.284 ms | 8.12 | 0.13 |
基准测试:生成器对小世界中的每个图块转换其他图块数据(如 Terraria.Tile)的速度
| Method | Mean | Error | StdDev | Ratio |
|---|---|---|---|---|
| AssignFromTile_Stock | 433.3 ms | 7.22 ms | 6.40 ms | 1.00 |
| AssignFromTile_Heap | 210.4 ms | 3.33 ms | 3.11 ms | 0.49 |
| AssignFromTile_Constileation | 195.7 ms | 2.45 ms | 2.29 ms | 0.45 |
| AssignFromTile_1d | 239.0 ms | 2.07 ms | 1.83 ms | 0.55 |
| AssignFromTile_2d | 240.5 ms | 3.03 ms | 2.69 ms | 0.56 |
| AssignFromTile_Struct | 277.6 ms | 3.74 ms | 3.49 ms | 0.64 |
基准测试:生成器对小世界中的每个图块清除图块数据(使用方法)的速度
| Method | Mean | Error | StdDev | Ratio | RatioSD |
|---|---|---|---|---|---|
| Clear_Stock | 308.8 ms | 3.90 ms | 3.65 ms | 1.00 | 0.00 |
| Clear_Heap | 479.1 ms | 9.20 ms | 9.84 ms | 1.55 | 0.03 |
| Clear_Constileation | 331.2 ms | 2.16 ms | 1.92 ms | 1.07 | 0.01 |
| Clear_1d | 557.8 ms | 3.24 ms | 3.03 ms | 1.81 | 0.03 |
| Clear_2d | 692.9 ms | 20.61 ms | 59.78 ms | 2.14 | 0.16 |
| Clear_Struct | 789.2 ms | 13.95 ms | 22.93 ms | 2.60 | 0.11 |
基准测试:生成器对小世界中的每个图块运行类似于原版中清理世界功能的逻辑的速度
| Method | Mean | Error | StdDev | Ratio | RatioSD |
|---|---|---|---|---|---|
| ClearWorld_Stock | 79.27 ms | 0.669 ms | 0.593 ms | 1.00 | 0.00 |
| ClearWorld_Heap | 239.87 ms | 2.324 ms | 2.060 ms | 3.03 | 0.03 |
| ClearWorld_Constileation | 62.48 ms | 0.948 ms | 0.887 ms | 0.79 | 0.01 |
| ClearWorld_1d | 139.73 ms | 1.621 ms | 1.516 ms | 1.76 | 0.02 |
| ClearWorld_2d | 151.27 ms | 2.341 ms | 2.190 ms | 1.91 | 0.03 |
| ClearWorld_Struct | 177.16 ms | 3.190 ms | 2.828 ms | 2.23 | 0.05 |
基准测试:生成器对小世界中的每个图块发布图块数据的速度
| Method | Mean | Error | StdDev | Ratio | RatioSD |
|---|---|---|---|---|---|
| Gets_Stock | 17.49 ms | 0.224 ms | 0.210 ms | 1.00 | 0.00 |
| Gets_Heap | 100.88 ms | 2.007 ms | 2.465 ms | 5.76 | 0.17 |
| Gets_Constileation | 27.15 ms | 0.513 ms | 0.455 ms | 1.55 | 0.03 |
| Gets_1d | 29.46 ms | 0.431 ms | 0.403 ms | 1.68 | 0.03 |
| Gets_2d | 27.93 ms | 0.258 ms | 0.242 ms | 1.60 | 0.02 |
| Gets_Struct | 33.77 ms | 0.671 ms | 1.719 ms | 1.85 | 0.08 |
基准测试:生成器对小世界中的每个图块更改图块类型的速度
| Method | Mean | Error | StdDev | Ratio | RatioSD |
|---|---|---|---|---|---|
| Type_Stock | 28.41 ms | 0.420 ms | 0.393 ms | 1.00 | 0.00 |
| Type_Heap | 120.99 ms | 2.317 ms | 2.480 ms | 4.25 | 0.10 |
| Type_Constileation | 36.95 ms | 0.732 ms | 0.977 ms | 1.30 | 0.04 |
| Type_1d | 38.65 ms | 0.686 ms | 1.027 ms | 1.38 | 0.04 |
| Type_2d | 39.64 ms | 0.405 ms | 0.359 ms | 1.40 | 0.02 |
| Type_Struct | 43.09 ms | 0.749 ms | 0.664 ms | 1.52 | 0.03 |
基准测试:测试生成器对小世界中的每个图块调用基本操作(如清除、类型更改和 .active)的速度
| Method | Mean | Error | StdDev | Ratio | RatioSD |
|---|---|---|---|---|---|
| Use_Stock | 359.4 ms | 4.67 ms | 4.14 ms | 1.00 | 0.00 |
| Use_Heap | 666.4 ms | 10.78 ms | 10.08 ms | 1.86 | 0.04 |
| Use_Constileation | 407.3 ms | 5.87 ms | 5.20 ms | 1.13 | 0.02 |
| Use_1d | 654.5 ms | 7.30 ms | 6.83 ms | 1.82 | 0.03 |
| Use_2d | 741.7 ms | 8.19 ms | 7.66 ms | 2.07 | 0.03 |
| Use_Struct | 1,235.3 ms | 7.60 ms | 7.11 ms | 3.44 | 0.03 |