SteamWar/FightSystem
Archiviert
13
1

Techhider: Verbesserungsvorschläge von Postremus #204

Geschlossen
2020-11-11 08:54:01 +01:00 von Lixfel geöffnet · 3 Kommentare
Besitzer

https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L125
Siehe Definition der Direkten Palette:
"This format is used for bits per block values greater than or equal to 9. The number of bits used to represent a block are the base 2 logarithm of the number of block states, rounded up. For the current vanilla release, this is 14 bits per block. "
bitsPerBlock < 9 wäre also eigentlich die Bedingung.
https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L119
Dieses if kann entfernt werden, und die entsprechende logik mit in die if Zeile 125 gezogen werden.
https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L134
Hier wird autoboxing von int zu Integer gemacht - was ziemlich lahm ist.
Die Konfigurierten versteckten Blöcke können primitiv mit einer IntSet (von fastUtil) abgebildet werden.
Siehe dazu meine Lösung für dieses Problem in: https://github.com/pro-crafting/WorldFuscator/pull/2 und https://github.com/pro-crafting/WorldFuscator/pull/6
https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L227
Es muss ausgebaut werden, dass für die Direkte Palette Multi Block Packete gesendet werden - das ist nicht wartbar auf dauer, mehrere Logiken verwalten zu müssen.
Zudem ist Multi Block langsamer (da Größer) als Chunk Packet.
https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L224
Falsche Skalierung der Threads. Dadurch muss der Prozessor unnötig oft zwischen Threads wechseln, da mehr Threads genutzt werden, als die CPU Kerne hat. Siehe z.b. https://stackoverflow.com/a/16128493 oder auch https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing

https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L125 Siehe Definition der Direkten Palette: "This format is used for bits per block values greater than or equal to 9. The number of bits used to represent a block are the base 2 logarithm of the number of block states, rounded up. For the current vanilla release, this is 14 bits per block. " bitsPerBlock < 9 wäre also eigentlich die Bedingung. https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L119 Dieses if kann entfernt werden, und die entsprechende logik mit in die if Zeile 125 gezogen werden. https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L134 Hier wird autoboxing von int zu Integer gemacht - was ziemlich lahm ist. Die Konfigurierten versteckten Blöcke können primitiv mit einer IntSet (von fastUtil) abgebildet werden. Siehe dazu meine Lösung für dieses Problem in: https://github.com/pro-crafting/WorldFuscator/pull/2 und https://github.com/pro-crafting/WorldFuscator/pull/6 https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L227 Es muss ausgebaut werden, dass für die Direkte Palette Multi Block Packete gesendet werden - das ist nicht wartbar auf dauer, mehrere Logiken verwalten zu müssen. Zudem ist Multi Block langsamer (da Größer) als Chunk Packet. https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_15/src/de/steamwar/fightsystem/utils/TechHider_15.java#L224 Falsche Skalierung der Threads. Dadurch muss der Prozessor unnötig oft zwischen Threads wechseln, da mehr Threads genutzt werden, als die CPU Kerne hat. Siehe z.b. https://stackoverflow.com/a/16128493 oder auch https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
Autor
Besitzer

Problem mit FastUtils: In jeder Spigot-Version unter anderem Pfad, daher so nicht wirklich verwendbar.

Problem mit FastUtils: In jeder Spigot-Version unter anderem Pfad, daher so nicht wirklich verwendbar.
Autor
Besitzer

Threadsize ist eher zu klein als zu groß für Last, macht aber Probleme im Problemfall (ChunkPacket-Stacking bis zum Heapende).

Threadsize ist eher zu klein als zu groß für Last, macht aber Probleme im Problemfall (ChunkPacket-Stacking bis zum Heapende).
Autor
Besitzer

260ns pro Lookup, ein getechhiderter Chunk braucht eher um 700-1100ys (Faktor 1000), bei nur durchschnittlich 130 Lookups (TechhiderIDs) => HashMap-Lookups sind nicht das Bottleneck.

260ns pro Lookup, ein getechhiderter Chunk braucht eher um 700-1100ys (Faktor 1000), bei nur durchschnittlich 130 Lookups (TechhiderIDs) => HashMap-Lookups sind nicht das Bottleneck.
Lixfel hat sich das Issue 2020-12-08 16:32:49 +01:00 selbst zugewiesen
Lixfel hat diesen Issue 2020-12-10 18:53:33 +01:00 geschlossen
Dieses Repo ist archiviert. Du kannst Issues nicht kommentieren.
Keine Beschreibung angegeben.