https://bugs.winehq.org/show_bug.cgi?id=49808
--- Comment #9 from Sagawa sagawa.aki+winebugs@gmail.com --- Created attachment 68175 --> https://bugs.winehq.org/attachment.cgi?id=68175 cache localized time zone name
Thanks for the log. It shows a lot of GetTimeZoneInformation calls are done. At least, there're 5,547 calls in 8.8 seconds (630.3 calls/sec). I realized we needs much more performance.
Now, I prepare the proposed patch. Could you test the patch? It performs more than 50 times better than before! I hope this helps Stellaris issue.
[Background] I wrote down a benchmark test which calls GetTimeZoneInformation within 10 seconds. I ran the test on VirtualBox 6.1.14 with Intel Core i7-6600U processor.
The results are: Wine 3.x: 175,877.3 calls/sec Wine 4.0: 258.9 calls/sec Wine 5.17: 2,587.2 calls/sec
Indeed, Wine 4.0 was poor performance (sorry for that). Now, Wine 5.17 better than before, but it fairly slower than Wine 3.x.
At first, I doubted RegLoadMUIString implementation. I tested empty RegLoadMUIString implementation to get ideal record. However, it showed only 8921.3 calls/sec even ideal case. I changed my mind.
After that, I implemented localized time zone name cache inside the API. This is a bit ugly code. But, it marks 149186.9 calls/sec. That means over 50 times better performance compared with the current implementation.