Я бы сначала поработал бы над расчетами, а потом пытался фиксить все "волшебной палочкой" WebWorkers
Я думаю, что тут надо убрать из отрисовки все расчеты, например цикл lineTo можно расчитать отдельно и сделать из этого path2D и отрисовывать уже его
https://developer.mozilla.org/en-US/docs/Web/API/P...
После этого сразу уйдет трансформация, как ненужная, тем более save() - restore() довольно дорогая операция, если хочется быстродействия
Ну и еще не лишним было бы внимательно подумать, что объединяет графики и не делать трижды то, что можно посчитать один раз