MultiServer: speed up location commands (#1926)

* MultiServer: speed up location commands

Adds optimized pure python wrapper around locations dict
Adds optimized cython implementation of the wrapper, saving cpu time and 80% memory use

* Speedups: auto-build on import and build during setup

* Speedups: add requirements

* CI: don't break with build_ext

* Speedups: use C++ compiler for pyximport

* Speedups: cleanup and more validation

* Speedups: add tests for LocationStore

* Setup: delete temp in-place build modules

* Speedups: more tests and safer indices

The change has no security implications, but ensures that entries[IndexEntry.start] is always valid.

* Speedups: add cython3 compatibility

* Speedups: remove unused import

* Speedups: reformat

* Speedup: fix empty set in test

* Speedups: use regular dict in Locations.get_for_player

* CI: run unittests with beta cython

now with 2x nicer names
This commit is contained in:
black-sliver
2023-07-04 19:12:43 +02:00
committed by GitHub
parent d35d3b629e
commit b6e78bd1a3
11 changed files with 675 additions and 34 deletions

View File

@@ -8,3 +8,5 @@ kivy>=2.2.0
bsdiff4>=1.2.3
platformdirs>=3.8.0
certifi>=2023.5.7
cython>=0.29.35
cymem>=2.0.7