12-07-2023, 12:53 AM
Price: $1500
Description: In AeroMogul, I employ threading via a library called BS::thread_pool. I've concluded that there are a few places inside GearCity's turn loop that we can thread without having to thread the entire game or mess with multi-threaded SQLite. One particular place where we can employ localized threading is the sales calculation systems during end turns. Currently, this system eats approximately 20% of our turn processing time. Cutting that in half could easily shave off 10% from the turn times. There are also several other places where I might be able to deploy localized threading solutions without multithreading the entire system.
The ultimate goal of this bounty is to improve turn times by 10%, but I could easily see improvements as high as 25 to 30% if we're lucky!
Requirements: #314
Required By: None
Concerns: This bounty could open a can of worms. Some places might not be as clean to implement as I think. There is a chance of bugs, so a lot of time will have to be spent on bug testing and profiling.
Eric's Opinion: A light went off when I was working on AeroMogul. That light shined a path to getting some parts of GC multithreaded without redoing much of the game's code. I don't know the full scope of functions I could thread, but I know one or two key locations where this could work. It could improve turn times. So it's worth a shot.
Links: It doesn't happen unless you contribute!
Threading library used in AeroMogul
Description: In AeroMogul, I employ threading via a library called BS::thread_pool. I've concluded that there are a few places inside GearCity's turn loop that we can thread without having to thread the entire game or mess with multi-threaded SQLite. One particular place where we can employ localized threading is the sales calculation systems during end turns. Currently, this system eats approximately 20% of our turn processing time. Cutting that in half could easily shave off 10% from the turn times. There are also several other places where I might be able to deploy localized threading solutions without multithreading the entire system.
The ultimate goal of this bounty is to improve turn times by 10%, but I could easily see improvements as high as 25 to 30% if we're lucky!
Requirements: #314
Required By: None
Concerns: This bounty could open a can of worms. Some places might not be as clean to implement as I think. There is a chance of bugs, so a lot of time will have to be spent on bug testing and profiling.
Eric's Opinion: A light went off when I was working on AeroMogul. That light shined a path to getting some parts of GC multithreaded without redoing much of the game's code. I don't know the full scope of functions I could thread, but I know one or two key locations where this could work. It could improve turn times. So it's worth a shot.
Links: It doesn't happen unless you contribute!
Threading library used in AeroMogul