Hi,
Beim detaillierten Überprüfen dieses Ansatzes sind wir auf den womöglich "wahren Übeltäter" gestoßen.
Der eigentliche Zeitfresser scheint das "WM_SETREDRAW" zu sein.
That log makes no sense, it looks like it is missing the reason of its use.
See, you missing core things to isolate, clearly the culprit is your approach with
1) FindComponent ! that thing is slow as turtle, you are repeating it and measuring it again and again....
2) What are these numbers in the scope "[xxx ms]" these makes no sense and not accumulate to the time on the left !?
3) I am afraid that "LogTime" and "LogProcedureEnd" have also something to do with efficient logging.
suggestion :
1) One FindComponent in that code and put them in a list if you want, and also measure it to put it this to rest.
2) Slice that procedure "ClearParVarPanel" into pieces, just simplify it as much as you can, one loop is more than enough, so either make it multiple procedures/functions or reduce it to %30 of its current lines.
3) Use one : either "WM_SETREDRAW" or "BeginUpdate..EndUpdate" but not both, these are messages and they are the same.