So if the new is toggle instead of set, how can I "set" it?
No need to set it if it is already set. Instead of doing nothing in this case, IMatch now toggles, which makes for a much smoother workflow. And makes all ratings behaving the same, from reject to 5.
You can also set ratings from the menu and the
The Collection OverlayMy questions about this was to isolate the toggle from the rest. Since nothing has changed for all the other methods to set/remove ratings, there should be no performance difference.
I cannot measure any performance difference between the new toggle mode and setting a rating and removing a rating. The code is the same as before, except for the nanoseconds needed for IMatch to check if the rating the user is currently setting is also set, and then set the rating to 0 instead of doing nothing.
Starting with 200 unrated files, I set them to 3* by pressing <3> and keeping it pressed. The Viewer zaps through the images as fast as it can load them.
I then repeated this test, starting with the first file again, keeping <3> pressed to remove (toggle) all ratings.
The two tasks take the same time. Only occasionally a ToggleRating with more than 10ms duration is logged, never over 30ms.
Database size similar to yours.
Do you have any data-driven categories based on collections? Or maybe formula-based categories?
File relation rules? Buddy file rules (only when you reject files)?
What puzzles me is why your database is performing so slow and shows timings or 300+ ms. for a simple Rating toggle.
This is usually only the case when the database is huge and on a spinning disk or, more likely, on a remote disk / NAS.
But on a local SSD?
The timings seem to correlate with recalculating the "None" collection (unrated files) (in the case you set/toggle an existing rating to none).
And this is the culprit I guess. This takes 0.5 seconds.
When setting a rating, IMatch updates the rating collections directly (adding/removing as needed).
This invalidates many other collections, from the Collections root to pending write-back etc. But the collections are just marked, not immediately recalculated.
Then the collection is immediately queried by "something" and this causes the recalc and the rather sluggish performance...
Do you run the Viewer on a second monitor so the IMatch UI is visible all the time?
Do you have the collection filter loaded in the Filter Panel?
Are you in the collection View?