Показать сообщение отдельно
Старый 02.02.2015, 00:27   #10
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Явное использование this.

Сообщение от Igor Посмотреть сообщение
Кстати, вдогонку (рассказывали на лекциях, сам не проверял): на x86 аргументы функции передаются через стек, а на x64 с помощью регистров. Если регистров не хватит (а их вроде раза в 2 больше стало, теперь 16), то непоместившееся по-старинке через стек.
Возможно, локальные переменные небольших методов в стеке вообще не окажутся, и компиляция под x64 ускорит выполнение
Хороший вопрос.
Насчёт поведения х64 по умолчанию я незнаю -- это надо выяснить и проверить, но для х86 можно выбирать как передавать с помощью соглашения о вызовах.
По умолчанию в с++ thiscall, а в с cdecl. WinAPI используют stdcall. Но компилятору можно сообщить явно что использовать. Например fastcall передает первые два параметра через регистры. Таким образом можно сократить на вызовах коротких мат-функций (в том числе интринсик), типа сложения, там где настройка стека занимает много времени относительно выполнения самой функции. Но в компиляторе помимо соглашения вызова ещё нужно установить параметр отмены настройки стека, т. к. он ненужен если параметров два и меньше.

Вот нашёл про кеш-линии:
http://www.slideshare.net/cellperfor...d-design-and-c
Начиная с 90 слайда показан конкретный пример.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Samodelkin за это полезное сообщение:
Igor (02.02.2015), St_AnGer (02.02.2015)