Бнопня по C++

Oct 01, 2016 04:42

Засада. Как вы думаете, какая C++ (11) функция может быть быстрее при достаточно развесистом классе Foo?

size_t DirectSize(Foo && foo) {
auto v = std::vector{std::move(foo)};
return v.size();
}

size_t IndirectSize(Foo && foo) {
auto v = construct_vector(std::move(foo));
return v.size();
}

при условии, что construct_vector() - это ( Read more... )

Leave a comment

Comments 76

levgem October 1 2016, 12:02:17 UTC
Блин, Лев, страшно то как. Два амперсанда, auto. Это же просто перл!

Reply

lionet October 1 2016, 12:14:58 UTC
Люди старались!

Reply

levgem October 1 2016, 12:31:25 UTC
с этим удобнее? Ты ощущаешь, что как и в старом С++ ты понимаешь, что именно будет сгенерировано из этого кода?

Reply

lionet October 1 2016, 13:09:18 UTC
Вот конкретно эти вещи я вполне себе понимаю на сишном уровне (на уровне размеров структур данных, алайнмента, heap vs stack, последовательности инициализации, количества копирований, наиболее вероятно сгенерирующегося ассемблерного кода, жизненного цикла всех данных, а также способа выбора методов, которые заселектятся этим кодом внутри vector-класса, ну и другие аспекты типизации).

Но вообще в C++ тёмных мест, которые нужно понимать и запоминать, раз в двадцать больше. И до каких-то вообще можно суметь не добраться за всю C++'шную карьеру.

Reply


rustler2000 October 1 2016, 12:07:26 UTC
увидеть Париж и умереть - вернуть размер и удалить :S
Вторую можно сделать быстрее

Reply

lionet October 1 2016, 12:14:37 UTC
Йеп. Причём, раза в два так быстрее.

Reply

(The comment has been removed)

rustler2000 October 1 2016, 15:12:38 UTC

Мув семантик не понимается инитиалайзерлистом и он всегда копию делать будет

Reply


kurilka October 1 2016, 12:30:46 UTC
а что такое "бнопня"?

Reply

maxim October 1 2016, 12:53:02 UTC
оПХБЕР, бНОПНЯ это типа отсыл к легаси, KOI-8, C++, UNIX :-)

Reply

lionet October 1 2016, 13:09:48 UTC

Re: Бнопня по C++ mpd October 1 2016, 14:55:47 UTC
Извини за off-topic, но - почему Си++?!

Reply

Re: Бнопня по C++ nponeccop October 1 2016, 19:24:24 UTC
Это же язык из топ пятёрки, а не какой-нибудь Felix. Значит, так надо.

Reply

Re: Бнопня по C++ mpd October 1 2016, 20:06:57 UTC
Тут, скорее, личный вопрос.
Я не думаю, что за эти 8 лет Си++ резко выбился в 5ку.
Да, конечно, даже с поправками 11-го года - это уже можно считать немного другим языком, а продолжающимся изменениям - конца не видно (подумать только, у меня сейчас компилятор поддерживает некоторые улучшения из Си++17!).
Но всё же тогда Лев был - категоричен и упорствовал!
И тут я читаю, что он задаёт вопросы по пюсам, куда катится мир!!! ;-)

Reply

Re: Бнопня по C++ nponeccop October 1 2016, 21:21:49 UTC
Так он из пятёрки никогда и не уходил. Тут просто люди в-основном веб да опердень пилят, определённый перекос. В лучшем случае можно говорить, что появляются единичные случаи вытеснения С++ из традиционных для него ниш. И во вновь создаваемых нишах (например, разного рода аппсторах) стараются чтобы у С++ не было совсем уж радикальных преимуществ. Тем не менее native renaissance.

Надо искать компании, которые в 2005 педалили что-то на С++, а в 2016 собираются делать из той же области, но уже не на С++. Отдельные люди не считаются. А если кто-то никогда и не выбирал писать что-то новое на С++, то у него очень мало авторитета для заявления об утрате С++ позиций.

https://channel9.msdn.com/posts/C-and-Beyond-2011-Herb-Sutter-Why-C

Reply


spamsink October 1 2016, 15:03:29 UTC
Тривиальный ответ - раз модули разные, то могут быть скомпилированы с разными уровнями оптимизации. STL без оптимизации медленный, как континентальный дрифт.

Reply


Leave a comment

Up