run steps of the IC on a single thread with yield in between consecutive steps (given that every step needs to acquire a lock on the IC state, we don't gain much by having tight loops running steps of the IC on multiple threads)
run system tasks (heartbeats and timers) whenever an ingress message result (reply/reject) is put into the certified state (as opposed to when the user submits the request which decreases the latency of the 202 HTTP response to the user request)
Benchmarks
base-line (a1b3f6706c33a40f1b7faa65a9652b3ddf39d1a6)
ic-ref-test: 410.51 s
ic-nns-init: 14.3 s
Changes
This PR makes the following changes:
yield
in between consecutive steps (given that every step needs to acquire a lock on the IC state, we don't gain much by having tight loops running steps of the IC on multiple threads)Benchmarks
base-line (a1b3f6706c33a40f1b7faa65a9652b3ddf39d1a6) ic-ref-test: 410.51 s ic-nns-init: 14.3 s
this PR ic-ref-test: 409.86 s ic-nns-init: 11.6 s