профилирование процессора для iPhone и pthread_setspecific - PullRequest
4 голосов
/ 04 августа 2011

При профилировании игры для iOS на iPhone 3G инструменты сообщают, что системный вызов pthread_setspecific (который вызывается из многих, казалось бы, не связанных между собой мест) является самым большим узким местом ЦП. Google говорит мне, что это связано с хранением метаданных для потоков, однако я не уверен, как это отследить, так как весь движок является одним потоком. Это связано с CADisplayLink? Могу ли я оптимизировать конкретные сценарии, чтобы лучше учесть это?

Вот некоторая соответствующая информация, которая может помочь при ответе на мои вопросы:

  • Устройство: iPhone 3G
  • версия iOS: 4.2.1
  • Код игры полностью на C ++, с прикладным уровнем в obj-C.
  • В игре используется OpenglES1.1
  • К сожалению, оба исключения RTTI и C ++ являются обязательными и, следовательно, включены.
  • Выполняется сборка релиза (с символами отладки) через профилировщик CoreAnimation в инструментах.

1 Ответ

2 голосов
/ 04 октября 2011

Код, сгенерированный обработкой исключений, использует локальное хранилище потока для хранения своего стека раскрутки.Там нет ничего, что вы можете легко сделать.Попробуйте удалить исключение, когда это возможно.Скомпилируйте часть кода без него.

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