Я прочитал довольно много материала об эффективности индексов массивов по сравнению с указателями, и о том, как это на самом деле не имеет значения, если вы не делаете много.Тем не менее, я делаю это много.
В рассматриваемом коде есть массив структур.(Два разных, для двух разных типов на самом деле, но что угодно).Поскольку мой фон в основном на языках более высокого уровня, я по умолчанию использовал стандартный формат particles[i].whatever
.Однако я не уверен, что это хорошая идея.Для одиночного доступа я знаю, что это не имеет большого значения, но в настоящее время одна из двух моих основных функций вызывает particles[i].something
8 раз и boxes[boxnum].something
4 раза на частицу за каждую итерацию.
В настоящее время для выполнения 5000 частиц и 5000 итераций требуется примерно секунда.Это означает, что я имею дело с этими доступами выше [включая другую функцию] 200 миллионов раз в секунду.На этой частоте имеет значение каждый маленький кусочек (тем более, что я в конечном итоге буду запускать этот код вовремя на чужом кластере).
Так что мой вопрос, стоит ли делать что-то вроде использованияуказатель на структуру вместо доступа к массиву, если gcc сделает это магически для меня, или если это действительно не имеет значения.
Спасибо ~~ Zeb
РЕДАКТИРОВАТЬ: ОК, так что компилятормагия означает, что я не должен беспокоиться об этом.Спасибо.
Вы предлагаете профилировщик, но я не могу заставить gprof сообщать мне более подробную информацию, чем занимают функции времени ... и я это уже знаю.Есть что-нибудь, что скажет мне это построчно?