I tested application with xcode profiler.
Result is this
I think the problem is when CGColor objects are creating every animationGradient call.
Maybe caching the objects will solve it ?!