Ускорение цикла For с большим количеством итераций? Цель С - PullRequest
1 голос
/ 16 декабря 2011

В моем приложении Open GL ES есть следующий простой цикл For:

for (NSValue * value in pointerStorageArray) 
{
    NSLog(@"Freeing Malloced Data");

    free(value);
}

Проблема состоит в том, что pointerStorageArray содержит около 40000 элементов данных (все данные для трехмерного объекта) и, следовательно, циклзавершение занимает около минуты.

Можно ли как-нибудь ускорить время, необходимое для завершения цикла?

РЕДАКТИРОВАТЬ

ЭтоВопрос теперь является иллюстрацией важности не кодировать в течение 18 часов подряд.Удаление NSLog Statement ускоряет его с 5 минут до 4 секунд;)

1 Ответ

2 голосов
/ 16 декабря 2011

Если замедление фактически вызвано повторными вызовами free(), то вы можете рассмотреть вопрос о выделении нескольких больших смежных блоков памяти, а не 40000 отдельных.

Как всегда, вы должны найти способчтобы профилировать свой код, чтобы точно определить узкое место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...