LINUX.ORG.RU

странная инфа по С


0

0

Вот где-то вычитал что (в каком-то учебнике):

uitn32_t A[N];

A[i] = 5;    (1)
*(A+i) = 5;  (2)

во втором случае скорость выполнения (индексация) будет быстрее.
Я совершенно не понимаю почему так может быть ? Ведь операции [] и +
выполняют прибавление индекса к базовому адресу. Может 
компилятор как-то по разному воспринимает ?
anonymous

>во втором случае скорость выполнения (индексация) будет быстрее.

ссылку на тест.

generatorglukoff ★★
()

Я что-то подобное вспоминаю... Но это, если мне не изменяет склероз, было применимо к Борландовскому компилятору под ДОС (BorlandC 3.1 кажись).
Точно уже не помню, по каким алгоритмам оно там считалось, но было да, помедленнее. Современные оптимизаторы компиляторов (и вычислительные мощности компов) делают эту проблему неактуальной.

Slavaz ★★★★★
()

Это офигенно странно, потому что A[i] это синтаксический сахр для *(A+i) o_O не верю что для современных компайлерв это актуально...

theos ★★★
()

Это абсолютно одно и то же. Думаю, не стоит без особой на то нужды затачивать свой код под странности какого-то одного больного компилятора.

alexsaa
()
Ответ на: комментарий от alexsaa

Соглашусь -- если какой-то компилятор и правда не может соптимизировать такое одинаково для С, то его пора на закопать.

www_linux_org_ru ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.