2012-06-13 4 views
0

Я пытался прочитать GCD и попытаться понять это. Я читал много мест, что всегда нужно использовать GCD, если вы делаете какую-то тяжелую работу, которая закроет пользовательский интерфейс, и я это понимаю, но GCD также можно использовать только ради производительности. Скажем, у меня есть цикл, который нужно запускать 10 раз, причем каждая итерация является тяжелой. Будет ли это улучшать производительность, чтобы выполнить половину этих итераций другого потока, так что два потока разделяют рабочую нагрузку или все равно потребуется столько же времени, чтобы пройти цикл?GCD = лучшая производительность, не относящаяся к пользовательскому интерфейсу?

ответ

2

Это поможет запустить две последовательные очереди gdc, если ваше устройство имеет два процессора. Однако идея состоит в том, что вам все равно, звоните dispatch_queue_create с DISPATCH_QUEUE_CONCURRENT и дайте устройству понять, какое оптимальное количество задач нужно выполнять параллельно.

2

Это полностью соответствует вашему дизайну логики цикла, на ваш вопрос нет правильного ответа, так как вам все же необходимо определить, как вы присоединитесь и объедините две разные обработки, которые вы сделали с этими данными, где данные будут сохранены, какова логическая проблема, которую вы собираетесь решить.

Однако то, что вы пытаетесь достичь в двух потоках, может привести к преждевременной оптимизации, поэтому перед тем, как вы начнете оптимизировать свой код для этого, пожалуйста, подумайте, стоит ли это осложнение, которое вы собираетесь ввести в свой код или нет.

Смежные вопросы