Не выполняйте интенсивные вычисления в главном потоке, потому что они заблокируют пользовательский интерфейс и приведут к ухудшению работы пользователя. Запустите их в фоновом потоке.
Тем не менее, iPhone является одноядерной системой, поэтому, если вычисление привязывает ЦП к одному потоку, производительность каждого другого потока может снизиться. Если вы можете, попробуйте разбить ваш расчет на более мелкие элементы и запустить их как NSOperations в NSOperationQueue. Если вы убедитесь, что сегменты вычислений не настолько малы, что накладные расходы на создание NSOperation для них становятся слишком большими, это может обеспечить возможность немного уменьшить вычисления, чтобы не замедлять анимацию.
Базовая анимация имеет тенденцию выполнять ряд вычислений заранее, до того, как анимация может быть запущена, поэтому они могут замедляться вашим тяжелым потоком вычислений. Вы также можете начать тяжелые вычисления в методе -animationDidStart: делегат для вашей CAAnimation, благодаря чему вычисление запускается только во время анимации. Я полагаю, что для развития анимации требуется меньше вычислений, чем для ее начала, поэтому она может лучше сосуществовать с вашими тяжелыми вычислениями.