As I said I never used or suggested anything related to the too limited On Signal feature because they have no parameters + no way to pass instance or SOL (+ perf can get exponentially worse and the UX is pretty bad). Same for all the other convos we had about this during the past 10 months 🤷♂️
That feature doesn't help at all with the issue I'm describing and the performance gets exponentially worse the more you use it.
You always told us how much cooler and performant Builtin Functions were versus True Triggers (x3.5 perf i think ?), so the perf diff is even bigger if you compare builtin Functions versus tag-based true Triggers with increasingly bigger number of triggers and signals, because it will trigger every single Signal block even if it's not the same Signal string you just called.
There are your own blog posts explaining this :
- construct.net/en/blogs/construct-official-blog-1/construct-3s-new-redesigned-1059
- construct.net/en/blogs/construct-official-blog-1/constructs-new-functions-1060
Here is your own graphic showing the difference between a between function and a old tag-based functions.
(+ note that the difference would be even bigger with tag-based True Triggers as old functions were already optimized via the deprecated Fast Trigger feature AFAIK !)
I still don't understand why asking for perf benchmark as you're well aware of this and you already did it yourself
The suggestion I made for "Better Signals" via a Emit Signal option for Functions/Custom Actions, allowing to add extra Listeners Blocks would solve all the issues mentionned (and even more as it could also feature an execution order option) :
construct.net/en/forum/construct-3/general-discussion-7/custom-actionsfunctions-175063
By default you would create a Function or a Custom Actions (nice UX and optimal perf for the "First Listener Block" at least), and if latter you realize that you'd like an additional listener blocks for it (for decoupling/organisation or because you want to apply different logic depending on the Layout or because you want to apply different logic depending on active groups/eventsheets as explained by me and other in different examples in this thread), you would just tick the "Emit Signal" boolean, and you could now create as many extra Listeners Blocks via the usual Object Conditions creation worklow. (that could probably be a bit more efficient than existing True Triggers for reasons mentionned on my first posts)
Some advantages of building Better Signals on top of Functions/Custom Actions instead of current On Signal Event :
Perf advantages : Built-in function perf + no need to trigger every signal every time + no need to do shenanigans to pass parameters + no need to do picking for each listeners
UX advantage : no typo due to strings, automatic bulk rename, parameters are automatically accessible as local variables in each listener block, Find all references support
+ if JS Events and scripting interfaces for calling Custom Actions are added, it would also work for this feature.
Other potential advantages from this suggestion : listeners blocks could be added via the same workflow as regular Conditions (the same way custom actions calls are added via regular Action workflow), execution order feature