?

Log in

No account? Create an account

Previous Entry | Next Entry

Бнопня по C++

Засада. Как вы думаете, какая 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() — это функция, определённая в другом модуле?

Poll #2054853 Быстрота, милота

Какая функция может быть быстрее?

DirectSize
9(40.9%)
IndirectSize
13(59.1%)


Вопрос специально сформулирован несколько расплывчато. Хочу мнений!

Comments

nponeccop
Oct. 2nd, 2016 04:03 pm (UTC)
Re: Бнопня по C++
Предлагаю спросить Льва в отдельном новом треде, и с явным указанием на то, что хочется ответа именно от него.

Совсем немного личный аспект могу прояснить и я. Echo закончился, сейчас Лев в новой команде работает над новым проектом.

Я не имел ввиду, что Си++ хороший. В докладе Саттера (он длинный, но имхо стоит посмотреть) говорится, что для С++ появились новые ниши, например, мобильные приложения. И что при больших датацентрах доминирует уже не зарплата разработчиков, а железо (стоимость оборудования и электричества), так что большие компании типа Гугла и Амазона и МС имеют миллионные кодобазы на плюсах и контрибутят усиленно в компиляторы С++. И что в будущем значение метрик производительности (производительность на доллар, на транзистор, на ватт) будет только возрастать, поскольку появляются новые невиданные классы приложений вроде машинного зрения (и я думаю машинного обучения с бигдатой).

mpd
Oct. 2nd, 2016 05:58 pm (UTC)
Re: Бнопня по C++
Спасибо!!!

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

Хотя, ... Вот, интересно, а та альтернатива, которую Лев тогда продвигал, как с ней сейчас?
Я ведь, грешным делом, так и не изучил ни одну из тех, что он предлагал...
А если бы изучил, оправдались бы мои вложения?
С другой стороны - "нас и здесь - не плохо кормят"...
nponeccop
Oct. 2nd, 2016 07:06 pm (UTC)
Re: Бнопня по C++
Ну сейчас есть Раст, Свифт, Julia и D, например. thedeemon и swizard говорят соответственно, что D и Rust вполне терпимы
mpd
Oct. 2nd, 2016 07:35 pm (UTC)
Re: Бнопня по C++
Это не совсем то, что Лев тогда выставлял, как лучшее.
Почему не упоминается Erlang и Haskell?
binf
Oct. 3rd, 2016 06:10 am (UTC)
потому что они тормозят
alll
Oct. 3rd, 2016 06:47 am (UTC)
Re: Бнопня по C++
Могу предположить, потому что Erlang и Haskell больше про быстроту и стоимость разработки, а C++ больше про скорость работы уже разработанного. Ну то-есть пилить опердень, веб-сервисы комментариев или парсеры html-страниц видимо на C++ не стоит, а на Erlang не стоит машинное зрение.
zyxman
Oct. 3rd, 2016 03:23 pm (UTC)
Re: Бнопня по C++
Насчет машинного зрения, всё тоже не так просто.

- Как уже заметил коллега thesz, когда речь идет про более-менее классические CPU, там ЧАСТЬ работы действительно оптимально делать на плюсах, но будет часть которая очень сильно выиграет от ДСЛ; а если речь идет о всяческих VLIW, CUDA, а также прочих FPGA/ASIC, то там уже не будет плюсов, а вероятнее всего будет существенная доля чистого Си, а остальное будет ТОЛЬКО ДСЛ, и ПЛЮС обязательно обертка на чем-то вероятнее всего скриптовом.

- Все дело в том, что код для сопроцессора уже далеко не идеально оптимизируется плюсовым компилятором, хотя сопроцессор очень близок по архитектуре к классическому CPU; а код для VLIW уже совсем всё..
mpd
Oct. 3rd, 2016 04:14 pm (UTC)
Re: Бнопня по C++
Лев же был тогда очень категоричен, перечитайте, пожалуйста.
Он не затрагивал экзотику, рассуждения носили очень обобщённый характер, так что мы говорим про более-менее классические CPU, не надо в сторону уводить.
zyxman
Oct. 3rd, 2016 05:57 pm (UTC)
Re: Бнопня по C++
Я с Львом общался лично где-то с 2010 года. Категоричность была несколько другая и совершенно логичная - что НОВЫЕ проекты будут ГОРАЗДО МЕНЬШЕ делаться на плюсах, а будут делаться на том на чем их удобнее делать, и в этом он совершенно прав.

- Реально сейчас очень много вещей за которые платят деньги, делаются совсем не на плюсах, а на Javascript, Java, Scala, Ruby. В этом ряду явно си-подобная только Java, а остальные в большей или меньшей степени богаче чем Си.
Чтобы Лев агитировал за Хаскел я вообще не припоминаю.
Re: Бнопня по C++ - mpd - Oct. 3rd, 2016 06:19 pm (UTC) - Expand
Re: Бнопня по C++ - zyxman - Oct. 3rd, 2016 06:47 pm (UTC) - Expand
thesz
Oct. 3rd, 2016 03:17 pm (UTC)
Re: Бнопня по C++
Электричество экономится не кодированием с экономией циклов, а правильной поддержкой протоколов типа Raft/Paxos и/или checkpoints.

Это я как недавно выращенный спец по HPC говорю.

С обеими пунктами у C++ тяжело.
mpd
Oct. 3rd, 2016 04:07 pm (UTC)
Re: Бнопня по C++
> Электричество экономится не кодированием с экономией циклов

Согласен! Говорят, интел уже давно выпустил процессор, который обходит вечный цикл за 1 секунду! :-D

А если серьёзно...

> Raft/Paxos и/или checkpoints

Это - отлично!

> С обеими пунктами у C++ тяжело.

Это из-за чего?
Они принципиально не реализуемы на Си++?
thesz
Oct. 4th, 2016 01:00 pm (UTC)
Re: Бнопня по C++
На C++ тяжело реализовать Paxos/Raft. В отличии от Фортрана, например, автоматически сделать checkpoint тоже тяжело.
mpd
Oct. 4th, 2016 02:44 pm (UTC)
Re: Бнопня по C++
А на чём - легко?
thesz
Oct. 4th, 2016 03:21 pm (UTC)
Re: Бнопня по C++
https://github.com/NicolasT/kontiki/tree/master/src/Network/Kontiki - 1500 строк (Haskell)
https://github.com/andrewjstone/rafter/tree/master/src - 2200 строк (Erlang)
https://github.com/RaftLib/RaftLib/tree/master/src - 37 файлов!!! (C++)

На чём угодно, что не C++. ;)
mpd
Oct. 4th, 2016 04:59 pm (UTC)
Re: Бнопня по C++
К сожалению, у меня не хватает знаний, чтобы оценить версии на Erlang и Haskell, сопоставить их с версией на Си++.
Хорошо, пусть три версии по всем характеристикам одинаковы:
  1. масштабируемы
  2. производительны
  3. сопровождаемы
  4. расширяемы
  5. интегрируемы

Я сделал wc на все файлы *.cpp - оказалось чуть больше 4000 строк, т.е., меньше, чем в два раза на Erlang, но опять же, не понятно, о чём это говорит, что это - нереализуемо?
Re: Бнопня по C++ - thesz - Oct. 4th, 2016 06:42 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 4th, 2016 07:07 pm (UTC) - Expand
Re: Бнопня по C++ - thesz - Oct. 4th, 2016 10:33 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 4th, 2016 10:52 pm (UTC) - Expand
Re: Бнопня по C++ - thesz - Oct. 5th, 2016 10:48 am (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 5th, 2016 11:51 am (UTC) - Expand
Re: Бнопня по C++ - thesz - Oct. 5th, 2016 11:57 am (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 5th, 2016 12:37 pm (UTC) - Expand
Re: Бнопня по C++ - rdia - Oct. 5th, 2016 04:17 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 5th, 2016 04:39 pm (UTC) - Expand
Re: Бнопня по C++ - rdia - Oct. 5th, 2016 04:54 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 5th, 2016 06:38 pm (UTC) - Expand
Re: Бнопня по C++ - thesz - Oct. 26th, 2016 05:42 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 26th, 2016 07:38 pm (UTC) - Expand
Re: Бнопня по C++ - thesz - Oct. 26th, 2016 11:19 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 27th, 2016 07:40 am (UTC) - Expand
Re: Бнопня по C++ - thesz - Oct. 27th, 2016 02:36 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 27th, 2016 02:54 pm (UTC) - Expand

Profile

lionet
Lev Walkin
Website

Latest Month

December 2016
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
Powered by LiveJournal.com
Designed by yoksel