microsoft / PowerToys

Windows system utilities to maximize productivity
MIT License
111.04k stars 6.54k forks source link

Abysmal performance from SVG Thumbnail Provider #34491

Open callmeTayyy opened 2 months ago

callmeTayyy commented 2 months ago

Microsoft PowerToys version

0.83.0

Installation method

GitHub

Running as admin

Yes

Area(s) with issue?

File Explorer: Thumbnail preview

Steps to reproduce

My bug report log: PowerToysReport_2024-08-29-18-54-31.zip

✔️ Expected Behavior

Thumbnails should be rendered in less than 500 milliseconds each. In the video bellow, SvgSee is used to make the thumbnails. My computer uses a Intel Core i5-3330; NVIDIA GeForce GTX 650 Ti; 16 GB DDR3-1333 SDRAM; and Windows 10 Enterprise v10.0.19045.4780 installed on a SATA SSD.

https://github.com/user-attachments/assets/74a4690a-bc5a-470c-9c96-e65f08cb2326

❌ Actual Behavior

In this video, PowerToys is used to render the thumbnails. Note the time it takes to render all the files.

https://github.com/user-attachments/assets/f6221f7b-dd6f-47fd-9eeb-0d0765d859a9

Other Software

No response

similar-issues-ai[bot] commented 2 months ago

We've found some similar issues:

If any of the above are duplicates, please consider closing this issue out and adding additional context in the original issue.

Note: You can give me feedback by 👍 or 👎 this comment.

callmeTayyy commented 2 months ago

I've also found this comment by @KaiHuaDou pertinent to this issue.

I think this problem may be caused by the conflict between Windows and PowerToys thumbnail policy.

If you bind the rendering thread to the thumbnail handler, Windows will start a rendering process for each thumbnail.

I think the correct approach should be: only one thread is responsible for rendering, and a small and fast program is registered as a thumbnail processing program. This program does not perform calculations, but is only responsible for transferring data. This way it will only start one renderer thread, not multiple ones, no matter how many files there are.

If PowerToys is using the browser engine for rendering, then previewing 100 SVGs will bring about as much performance pressure as opening 100 Edge tabs.

OmniNaut commented 1 week ago

Not surprised if this issue is related to these as well https://github.com/microsoft/PowerToys/issues/33542 and https://github.com/microsoft/PowerToys/issues/34108