C ++ 0x оптимизирует качество компилятора - PullRequest
12 голосов
/ 21 апреля 2010

Я немного перегружен, и для меня очень важна производительность с плавающей запятой. Мне очень нравится производительность компилятора Intel и вполне доволен качеством сборки, которую он производит.

В какой-то момент я думаю попробовать C ++ 0x в основном для частей сахара, таких как auto, списка инициализаторов и т. Д., Но также для лямбд. на данный момент я использую эти возможности в обычном C ++ с помощью boost.

Насколько хороший ассемблерный код генерируют компиляторы C ++ 0x? в частности, компиляторы Intel и GCC. Они производят код SSE? сопоставима ли производительность с C ++? Есть ли ориентиры?

Мой поиск в Google мало что показал.

Спасибо.

ps: в какой-то момент я собираюсь протестировать его сам, но хотел бы знать, чего ожидать от C ++.

1 Ответ

8 голосов
/ 21 апреля 2010

Вы можете ожидать такой же оптимизации для своего кода, потому что компилятор определенно не ухудшился в оптимизации. Таким образом, только использование новых функций C ++ 0x может повлиять на это. Но я сомневаюсь, что ваши основные подпрограммы внезапно будут полностью изменены, чтобы каким-то образом использовать возможности только C ++ 0x.

Имейте в виду, что такие вещи, как auto и лямбда - просто синтаксический сахар. Это не повлияет на оптимизацию компилятора, потому что это всего лишь методы генерации того же кода, что и в любом случае. Так что вам нужно всего лишь беспокоиться о новых «вещах», таких как списки инициализаторов. Но я бы удивился, если бы это было неэффективно.

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

...