Techhider: Verbesserungsvorschläge von Postremus #204
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
1 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/FightSystem#204
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "%!s()" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
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
Problem mit FastUtils: In jeder Spigot-Version unter anderem Pfad, daher so nicht wirklich verwendbar.
Threadsize ist eher zu klein als zu groß für Last, macht aber Probleme im Problemfall (ChunkPacket-Stacking bis zum Heapende).
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.