Вы можете попробовать использовать немного резьбы с помощью этого метода, чтобы ускорить процесс, можно просто положить все это в нормальном dispatch_async, если ничего не нужно ждать его, чтобы закончить
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) {
//put all lengthy calculations here
dispatch_async(dispatch_get_main_queue()) {
//do any UI updates here
}
}
, если вы действительно хотите ускорить расчет, хотя, вам придется разбить на петли, чтобы сделать петлю на разных потоках
let group = dispatch_group_create();
let queue = dispatch_queue_create("processStuff", DISPATCH_QUEUE_CONCURRENT)
for x in 1...325{
dispatch_group_async(group,queue,{
for y in 1...325{
//do stuff
}
})
}
//dispatch_group_wait(group,DISPATCH_TIME_FOREVER); // use this if you want to wait here, blocking the main thread
dispatch_group_notify(group,dispatch_get_main_queue(),{ //use this if you want to be notified when all the groups have finished without blocking the main thread
})
предупреждения: если вы расчеты в каждый внутреннего цикла зависят от других итераций других для итераций цикла или переменные внешней r, ваши вычисления могут испортиться, поэтому будьте осторожны.
поставить это код в папке dispatch_asyn –
что вы делаете с char? если вы делаете дорогостоящую операцию, используя ее 105625 раз, это, скорее всего, замедлит работу вниз. – Fonix
Получите ссылку на указатель на string.characters и итерации по указателю. См. Пример здесь https://github.com/petershaw/charsinfile/blob/master/charsinfile/CharReader.swift –