It is your call in the end to leave some logging on or not. As mentioned, it is fastest to have logging turned off after you have completed debugging. Note that webcore does maintain trace information even if logging is off for the last execution and history of executions.
Here are some simple performance comparison for a very simple piston:
[38, 15, 14, 20, 14, 23, 17] = ave 20ms. no logging (7 runs)
[37, 35, 20, 25, 22, 28] = 28 ms. logging set to 'minimal' logging (6 runs)
This is right after a reboot, so jvm/JIT has not done much of anything yet, and the system may be settling.
The overhead is state accesses, which are slow in HE (db).
If you ran the above tests longer, they continue to get faster because JVM/JIT does its work, but as state size grows, the db accesses can get longer (or if there are a lot of other apps beating on the db, they compete at the db). The db accesses also show a lot of variability both over short and longer timeframes.
The first access to a newly saved piston (or newly rebooted hub), is a bit longer as there is some initialization that happens, that will not be repeated.
The execution times are actually shorter than listed above, as a piston gets state, runs, then saves state.
A lot of the improvements in webCoRE HE have been dramatic reductions in state size and accesses.
As a comparison, ST typically cannot start piston in these times (much less finish).
- Typical times I see from my account are over 150ms average
- that said, ST generally has faster CPUs, so putting a piston compute bound, ST can go much faster. In general this is not the home automation workload.
- ST can run many more in parallel (they have throttles). HE can run 4 in parallel.