amhndu / SimpleNES

An NES emulator in C++
GNU General Public License v3.0
4.85k stars 1.12k forks source link

Update for better thread, type, etc. safety and performance #18

Closed WSLUser closed 3 years ago

WSLUser commented 3 years ago

Make use of https://github.com/pinam45/dynamic_bitset and it's optional dependency: https://github.com/kimwalisch/libpopcnt

Also make use of https://github.com/fmtlib/fmt, which is part of the C++ 20 standard but available for earlier versions.

Potentially make use of https://github.com/martinus/robin-hood-hashing for maps.

Add into the build step to use https://github.com/microsoft/mimalloc to greatly improve performance of allocations.

amhndu commented 3 years ago

Given the poor support of package management in C++ and given that these don't really add anything to the project, other than change for the sake of it, I'm afraid I don't really see the positive here.

WSLUser commented 3 years ago

Given the poor support of package management in C++

Git submodules work just fine in C++ as any other language. These are mostly header libraries to include and replace parts of the code with. Improving type-safety, thread-safety, etc. in addition to boosting performance hardly seems to be adding nothing to the project. Code health is important and ensures less bugs, less resource issues for users and helps prevent crashes. All of these are worth-while endeavors.

Also, I guess you never heard of https://github.com/microsoft/vcpkg among many other forms of package management.