If you are using saveRecord, then it could be that the operation is being given lower priority. Per Apple's documentation:
This method saves the record with a low priority, which may cause the
task to execute after higher-priority tasks. To save records more
urgently, create a CKModifyRecordsOperation object with the desired
priority. You can also use that operation object to save multiple
records simultaneously.
So, if you are indeed using saveRecord, try using CKModifyRecordsOperation instead and see if that improves upload times.
That being said, also do try to optimize the image as much as possible before uploading. And, in the case of changed (updated) CKRecords, it is not necessary to save all fields of a record (thereby re-uploading existing images) - you can pick and choose the fields you would like to save.
Hope that helps!