Tomaž Jerman
Tomaž Jerman
Tested on some other benchmark and that one looks fine... I can't figure out exactly why this happens but everything points to how we utilize routines and channels under the...
Figuring it all out... The random gaps were caused by sonyflake (since it can only generate 255 IDs per 10ms; https://github.com/sony/sonyflake). The gap between benchmark iterations is caused due to...
Temporarily moving to product backlog to do some profiling on DAL
## Workflow state management Looking into the state change handler and how the state values are cloned. Originally we used a JSON marshal into JSON unmarshal which is quite resource...
After adding it ⭐ properly ⭐...
Before ``` 136 11005555 ns/op 2573102 B/op 45278 allocs/op ``` After ``` 270 4736002 ns/op 1561992 B/op 19903 allocs/op ``` Comparing the numbers: ``` time 11005555/4736002 = 2.32 times better...
## Execution stack traces The issue with how stack traces currently work is every step makes a frame and pushes it to the stack. The problem occurs with large/tight loops...
Updating the workflow to utilize reworked stack traces (used a longer iterator for this case) Before: ``` 6 277497340 ns/op 73437206 B/op 552388 allocs/op ``` After ``` 49 22680575 ns/op...
## Benching everything together Running the same (1k iterations) benchmark before everything and now: Before: ``` 4 305242125 ns/op 118081396 B/op 1278072 allocs/op ``` After: ``` 52 23118595 ns/op 9559500...
## Changing the workflow exec waiter to use channels Using a more sophisticated approach over an infinite loop ticking every x ns. The solution uses a channel which blocks the...