Example:
```
$ tools/measure_timedemo_performance.py -n 32 --binary build-reld-sdl1-nonet-nosound-unpk/devilutionx
Run 1 of 32: 6.02 seconds 170.8 FPS
Run 2 of 32: 6.22 seconds 165.5 FPS
Run 3 of 32: 6.01 seconds 171.1 FPS
Run 4 of 32: 6.03 seconds 170.6 FPS
Run 5 of 32: 6.05 seconds 170.2 FPS
Run 6 of 32: 6.04 seconds 170.3 FPS
Run 7 of 32: 6.03 seconds 170.5 FPS
Run 8 of 32: 6.03 seconds 170.5 FPS
Run 9 of 32: 6.01 seconds 171.1 FPS
Run 10 of 32: 6.04 seconds 170.3 FPS
Run 11 of 32: 6.03 seconds 170.7 FPS
Run 12 of 32: 6.03 seconds 170.7 FPS
Run 13 of 32: 6.04 seconds 170.3 FPS
Run 14 of 32: 6.03 seconds 170.6 FPS
Run 15 of 32: 6.04 seconds 170.3 FPS
Run 16 of 32: 6.04 seconds 170.4 FPS
Run 17 of 32: 6.03 seconds 170.6 FPS
Run 18 of 32: 6.03 seconds 170.5 FPS
Run 19 of 32: 6.06 seconds 169.9 FPS
Run 20 of 32: 6.04 seconds 170.3 FPS
Run 21 of 32: 6.03 seconds 170.7 FPS
Run 22 of 32: 6.02 seconds 171.0 FPS
Run 23 of 32: 6.02 seconds 170.8 FPS
Run 24 of 32: 6.02 seconds 170.8 FPS
Run 25 of 32: 6.04 seconds 170.3 FPS
Run 26 of 32: 6.03 seconds 170.8 FPS
Run 27 of 32: 6.04 seconds 170.4 FPS
Run 28 of 32: 6.07 seconds 169.4 FPS
Run 29 of 32: 6.03 seconds 170.7 FPS
Run 30 of 32: 5.99 seconds 171.7 FPS
Run 31 of 32: 6.01 seconds 171.1 FPS
Run 32 of 32: 6.06 seconds 169.9 FPS
6.038 ± 0.037 seconds, 170.400 ± 0.988 FPS
```
`-O2` increases the binary size by 0.5 MiB which we can now afford.
Increasing buffer size to `768` improves performance (seems to be the
sweet spot).
15-20 FPS in dungeon on the max-mem OD fork.
When using `UNPACKED_MPQS`, avoid all the SDL machinery for reading
files.
This is beneficial not only due to reduced indirection but also because
we can test for the file's existence and get the file size without
opening it, which is much faster.
1. Remove `find_package(BZip2 REQUIRED)` from Dependencies.cmake
because it is not used by devilutionx directly (it's a libmpq dependency).
2. For emscripten, use the built-in version of bzip2.
3. Reverts 0b4705cf1c, which added
a redundant `find_package(ZLIB REQUIRED)` to `Dependencies.cmake`.
* CMake: 3rdParty/zlib fixes
1. zlib already provides a CMakeLists.txt, use it.
2. Stub find_package for source build. ZLIB is used by libpng via `find_package(ZLIB)`.
3. amiga.cmake: Remove `find_package(ZLIB)`.
* Update UWP build directory for zlibstatic.lib
Co-authored-by: staphen <staphen@gmail.com>
A vector is a lot more efficient here as we generally
only have a handful (1-3) backbuffers.
Additionally, this avoids a lot of temporary allocations every frame,
which were apparently triggered by `emplace` even if the element
already existed.