Checkpoint 3.10.0
BernardoGiordano continue d’améliorer, petit à petit, son gestionnaire de sauvegardes pour Switch et 3DS. C’est surtout sur 3DS que des optimisations majeures ont été opérées, notamment sur le temps de démarrage de l’application qui a drastiquement été réduit, de 50% sans cache (au premier démarrage) et de 90% avec cache !
Checkpoint 3.10.0
This release focuses on adding performance improvements to the 3DS version of the software.
What’s new
- Fixed: startup time has been drastically improved: ~50% speedup on uncached boot, ~90% speedup on cached boot.
- This has been achieved by profiling the application boot process, and realizing that title cache persistence on the SD card took majority of the loading time. Now this operation is lazily done in a separate thread. It’s funny to realize that a badly implemented optimization can become a bottleneck of its own, so take my mistake as a lesson.
- Here’s the improvements I had on my console (improvements may vary since they depend on how many games you have on your console):
- Uncached startup went down from 9.8s to 5.7s
- Cached startup went down from 5.7s to 0.6s
- Added: due to requests from multiple users, Checkpoint can now be updated from Universal Updater.
- Fixed: cartridge loading now runs immediately rather than waiting for the title cache to be persisted on the SD card.
- Fixed: properly quit the application gracefully when an handled exception occurs.
- Fixed: initial code refactoring.
- Removed: some redundant logs in the title loader.
- General system stability improvements to enhance the user’s experience.
Thank you for your patience and support.
If you wish to contribute, pull requests are highly appreciated.
Checkpoint 3.9.0
What’s new
- Fixed: the startup crash issue affecting all version since 3.8.0 has been identified and patched.
- Huge shoutout to achinech on Discord who volunteered to debug the issue on their console.
- If you still encounter startup crash issues, please notify the team immediately on Discord and on GitHub issues.
- Fixed: cartridge scanning has been refactored to be way more efficient.
- Previously, the software used to poll the cartridge synchronously for every frame of the UI thread. Cartridge scanning is now happening on a separate thread which only runs twice per second.
- Added: a more advanced threading framework ported from PKSM.
- Added: networking support and an integrated HTTP server. This is currently used to provide real-time online access to the application logs, but this code will be useful for future features like self-updating.
- Added: more robust logging ported from PKSM. Logs are stored in the /3ds/Checkpoint/logs folder and are split by date.
- Logs are also accessible at runtime through the integrated HTTP server at the following addresses:
- http://3ds-ip-address:8000/logs/memory for the logs of Checkpoint’s current run
- http://3ds-ip-address:8000/logs/file for all the logs for the current date
- Logs are also accessible at runtime through the integrated HTTP server at the following addresses:
- Added: compiler optimizations are back. This includes link-time optimization and an upgrade from O2 to O3 compared to v.3.7.4.
- Fixed: better configuration file handling ported from PKSM.
- Fixed: better thread synchronization between UI thread and title loading thread.
- Fixed: wrap the entire program into try-catch blocks to prevent crashes caused by other unhandled exceptions in the future.
- Fixed: few graphics improvements.
- Fixed: readme has been updated with latest screenshots.
- General system stability improvements to enhance the user’s experience.
The source code has started to become a little bit messy, but this patch needed to be released as soon as possible. Future improvements to the software will surely focus on code and program cleanup and performance improvements.
Thank you for your patience and support.
If you wish to contribute, pull requests are highly appreciated.
