Yellow-Dog-Man / FreeImage

Customized fork of the FreeImage library
Other
11 stars 6 forks source link

Performance Issues #7

Closed ProbablePrime closed 7 months ago

ProbablePrime commented 8 months ago

Resonite has some reported performance concerns here: https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/874

We should investigate them.

Nutcake commented 7 months ago

I did some local testing and recompiled FreeImage with this line here: https://github.com/Yellow-Dog-Man/FreeImage/blob/72e49dbbaab41db9d651317b813cd4939793c217/Source/FreeImage/PluginWebP.cpp#L475 set to zero instead: config.method = 0;

This change reduced the average time it takes between pressing the screenshot button and steam registering the screenshot from about 7 seconds to less than 2 seconds. The resulting screenshots show no difference in quality to my eye: method = 0 method = 6 (test image from here https://imagecompression.info/test_images/)

Now I don't know if this has secondary effects elsewhere, it's possible it could reduce the quality of the image shown in-game? However from just a visual inspection that seems unchanged as well.

Edit: It seems the given parameter only affects compression strength, meaning the resulting images are the same, but the faster method 0 creates larger image files. In the given examples, the faster method created a file that's about 0.3M bigger than the slower method. In my opinion the tradeoff here is justified, I'd much rather have a much more snappy user experience, than save ~20-30% of bandwidth/storage