Автор Гілка: про оптимізацію  (Прочитано 7204 раз)

Відсутній btr

  • Письменник
  • *****
  • дописів: 653
  • Карма: +0/-0
Re: про оптимізацію
« Відповідей #15 : 2005-12-20 09:07:41 »
У програмі є цикл, що крутиться приблизно мільйон разів. Логічно зробити так, щоб одна ітерація займала найменеше часу. Який оператор швидкіший  :D ? for чи while? Чи може вони однаково компілюються? Що порадите?
1. Зафіксувати перед циклом і після час і вивести й порівняти.
2. Скомпілювати елементарні цикли й глянути в дизасемблері, що він там накомпілював.

Відсутній Yaroslav Fedevych

  • Літератор
  • ******
  • дописів: 1069
  • Карма: +0/-0
  • Людина — ніщо, справа — все
Re: про оптимізацію
« Відповідей #16 : 2005-12-20 12:32:40 »
Чого в дизасемблері? gcc -S.

k_ilya

  • Гість
Re: про оптимізацію
« Відповідей #17 : 2005-12-20 19:18:30 »
Тема мені нагадала про  - залежність швидкості від положення кабелів (була така ржачна тема на ixbt) та від адреси у пам'яті (якийсь відомий баян). Для ржачного доведення цих твердженнь застосовано мабуть всі відомі пересічній людини науково-фантастичні спекуляції  ;D

Відсутній Yaroslav Fedevych

  • Літератор
  • ******
  • дописів: 1069
  • Карма: +0/-0
  • Людина — ніщо, справа — все
Re: про оптимізацію
« Відповідей #18 : 2005-12-20 20:43:39 »
Колись від адреси в пам'яті швидкодія справді залежала.

З якогось дива інтелівські процесори звертались за парними адресами чи не в півтора рази швидше, ніж за непарними.

zzandy

  • Гість
Re: про оптимізацію
« Відповідей #19 : 2006-03-22 20:33:52 »
З якогось дива інтелівські процесори звертались за парними адресами чи не в півтора рази швидше, ніж за непарними.

Це через вирівнівання пам`яті. Якщо ви хочете парне слово, то ви його берете прямо з пам`яті, а якщо непарне, то все одно берете спочатку парне (а можливо і два), вирізаєте з них те, що вам потрібно, і тільки потім отримуєте.

Там спочатку теми була така репліка, мовляв ще спитайте, що швидше і++ чи ++і. Так от швидше ++і, тому, що не створюється проміжна копія. Різницю можна помітити навіть в int-ів, і чим вільший тип і, тим серйозніша різниці в швидкості