-
-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MM tweaks still #415
MM tweaks still #415
Conversation
4ccce85 seems to be the last of the low hanging fruit there. Searching through the targets for the key was quite costly, and the search happens for http://box.ferrand.cc/sfizz-reports/2020-09-09-mm-tweaks-still-2.html |
We now see more clearly that there are some big spikes in dispatch duration ( |
4ccce85
to
426c2c2
Compare
This PR modifies the vstgui submodule, you should probably undo that. |
Yes, it's a bit a solution like this I wish to have, but it can be even better.
Imo, sfizz really needs a generic intrusive list structure. |
I chose the hash table because it seemed to me that the
I guess the "sister voices" are kind of like this no? I did this for the sister voices because they can change and be reassigned to other rings, but in this case this data structure is quite fixed, so I don't know. I don't have a strong argument against though. How does this help midi? |
426c2c2
to
e7d9d77
Compare
Yes I'm always happy when submodules do this to me ! |
In the PR #407 it's basically implementing an adhoc linked list. |
So I tested this using 2 arrays (for negative and positive indices). The difference in performance seems non-existent, so it might not be necessary to bother. https://box.ferrand.cc/sfizz-reports/2020-09-11-hashmap-vs-vector-mm.html |
I don't understand: why does this not use an ordinary vector? |
I guess I am just extremely confused about the need and use of this NumericId then, but OK... Anyway, the result is still the same, using any kind of vector over hashmaps there seems to have no impact on actual performance. |
af56c46
to
d7a1d2f
Compare
d7a1d2f
to
ba53028
Compare
One of the consuming operation is looping through the sources for nothing since we're basically never hitting the right sources (or targets) for a given voice id. This patch adds a container that maps a
NumericId<Region>
to a set of source indices. This way we have one lookup through the container, and an iteration to go through all the relevant sources.http://box.ferrand.cc/sfizz-reports/2020-09-09-mm-tweaks-still.html
Notice that this completely remove the "residual" part almost, which was where all these failed lookups were going to. What's left now is the lookup per-voice for each modulation target on rendering each block, but I think this could be memorized within the voice.