?

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

justy_tylor
Oct. 1st, 2016 11:43 pm (UTC)
RE: Re: Бнопня по C++
C++ это единственная CPU-выжималка без ухода в эзотерику или лютый аскетизм. Вопросы "почему?" бессмысленны. А "за что мне эти заборы-коровники?" - символичны.
mpd
Oct. 2nd, 2016 09:58 am (UTC)
Re: Бнопня по C++
"А вы не знаете, почему Володька сбрил усы?"
"Вы не отвечаете на мой ответ!"

Хорошо, вы меня - убедили про Си++: "Ладно, я согласен быть богатым. Согласен быть счастливым."
А теперь вернёмся к моему изначальному комментарию (я уже объяснил для Профессора, постараюсь и вам), чего я никак не пойму: Почему человек, спустя восемь лет после утверждения и настаивания на том, что Си++ - мёртв, вдруг начинает обсуждать продвинутые фичи современного состояния языка? Вот, мне интересен именно личный аспект, что произошло, как это происходило, почему?

Вот, как мне ваши с Профессором комментарии помогают понять это?
Что это произошло из-за того, что Си++ - хороший? Ну, я и восемь лет назад что-то об этом думал, если сходить по ссылке на мой блог (печатаю явно, а то стиль скрывает): http://mpd.livejournal.com/13951.html
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 вполне терпимы
Re: Бнопня по C++ - mpd - Oct. 2nd, 2016 07:35 pm (UTC) - Expand
(no subject) - binf - Oct. 3rd, 2016 06:10 am (UTC) - Expand
Re: Бнопня по C++ - alll - Oct. 3rd, 2016 06:47 am (UTC) - Expand
Re: Бнопня по C++ - zyxman - Oct. 3rd, 2016 03:23 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 3rd, 2016 04:14 pm (UTC) - Expand
Re: Бнопня по C++ - zyxman - Oct. 3rd, 2016 05:57 pm (UTC) - Expand
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++ тяжело.

Это из-за чего?
Они принципиально не реализуемы на Си++?
Re: Бнопня по C++ - thesz - Oct. 4th, 2016 01:00 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 4th, 2016 02:44 pm (UTC) - Expand
Re: Бнопня по C++ - thesz - Oct. 4th, 2016 03:21 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 4th, 2016 04:59 pm (UTC) - Expand
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
zyxman
Oct. 3rd, 2016 03:12 pm (UTC)
Re: Бнопня по C++
> Почему человек, спустя восемь лет после утверждения и настаивания на том, что Си++ - мёртв, вдруг начинает обсуждать продвинутые фичи современного состояния языка? Вот, мне интересен именно личный аспект, что произошло, как это происходило, почему?

Я думаю что нет там особо никакого личного аспекта. Это именно что рафинированный джаст бизнес.

Просто пока кодобаза С++ огромна и ее никак нельзя игнорировать, так что можно где это удобно использовать всяческие Эрланги, а остальное делать на С++.
Точнее, где Лев может выбирать, он выбирает то что ему более удобно, а где не может, там выбирают другие.

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

Поэтому случаются вообще феноменальные истории, типа енота, серверная часть которого изначально писалась на дотнете, а потом ради ускорения ее переписали на плюсах.
mpd
Oct. 3rd, 2016 04:23 pm (UTC)
Re: Бнопня по C++
Ну, хорошо, идёт поддержка старого, согласен.

Но почему тогда, спустя восемь лет, когда я пересобираю всю систему из исходников (у меня Gentoo) с большим количеством разного софта из исходников, я ни разу не напарывался на софт из тех самых альтернатив (Erlang, Haskell)? Ну, должно же было что-то появиться уже!!!

Единственный раз, когда у меня потянулась зависимость - установка darcs. Но т.к. я его не использую, то снёс уже очень давно и не возвращался к нему.

Хотя, наверно, я - слишком "красноглазик" и на винде с макосью - всё выглядит совсем иначе, не знаю...
zyxman
Oct. 3rd, 2016 06:38 pm (UTC)
Re: Бнопня по C++
> Но почему тогда, спустя восемь лет, когда я пересобираю всю систему из исходников (у меня Gentoo) с большим количеством разного софта из исходников, я ни разу не напарывался на софт из тех самых альтернатив (Erlang, Haskell)?

Потому что Линукс это только ядро с утилитами, которые всё еще пишутся на Си, а производители стороннего софта вынуждены либо склоняться под превалирующее положение вещей, либо создавать собственную инфраструктуру с нуля, что может потянуть только очень крупная контора.

Да, и среди альтернативщиков, полноценная инфраструктура разработки есть практически только у Эрланга и только под свою предметную область (серверы и очень большие риалтаймовые сети), а все остальные почти голые - ни библиотек, ни проработанной экосистемы разработки.
А у плюсов есть хоть и хреновенькие но готовые экосистемы почти под всё на свете.
Re: Бнопня по C++ - mpd - Oct. 3rd, 2016 07:58 pm (UTC) - Expand
Re: Бнопня по C++ - zyxman - Oct. 3rd, 2016 11:25 pm (UTC) - Expand
Re: Бнопня по C++ - zyxman - Oct. 3rd, 2016 11:50 pm (UTC) - Expand
Re: Бнопня по C++ - mpd - Oct. 4th, 2016 08:46 am (UTC) - Expand
anonim_legion
Oct. 4th, 2016 03:14 pm (UTC)
Потому что под линуксы не пишут ничего И открытого И нетривиального. Потому что с нетривиальными областями у опенсорца вообще туго. Байтики перекладывать они могут, емейлы посылать, или там - "резиновый" диск сделать на LVM.

А вот например сделать ИИ для single-player опенсорцной игры уже не могут. И то же машинное зрение - оно вышло вовсе не из тех мест, где ваяют ядро, или допиливают дырки в bind. Вещи вроде Apache Cassandra тоже не на си с дырками написаны.
thesz
Oct. 3rd, 2016 03:09 pm (UTC)
Re: Re: Бнопня по C++
Надо добавлять, что C++ работает, когда CPU это Out-of-order x86 или Alpha или Power какие-нибудь. Шаг в сторону и C++ непригоден (ну, переписывать ВЕСЬ КОД для 40% выгоды).
mpd
Oct. 3rd, 2016 04:02 pm (UTC)
Re: Бнопня по C++
> Шаг в сторону и C++ непригоден

А это - в какую сторону, например?
Какие варианты самые распространённые из "сторон"?

> переписывать ВЕСЬ КОД для 40% выгоды)

А в чём заключается переписывание?
Какие самые распространённые примеры, с чем современные компиляторы не в силах справится, соптимизировать?
zyxman
Oct. 3rd, 2016 06:46 pm (UTC)
Re: Бнопня по C++
Проблема не в компиляторе, а в том что у СТАНДАРТНОГО С++ очень низкий уровень абстракции, жестко заточенный на CISC процессор.

- Например, были для многопоточности разработки типа специализированного Си, у которого директивами препроцессора отмечаются отдельные потоки (вот этот самый дополнительный уровень абстракции так добавили). Но это оказалось очень неудобно.

Ну а скажем векторные инструкции используются через либы, которые написаны на ассемблере, то есть вы не используете в программе примитивы а обращаетесь через АПИ к абстрактному черному ящику, что очень сильно ограничивает.
thesz
Oct. 4th, 2016 12:58 pm (UTC)
Re: Бнопня по C++
Почитайте про перенос игр с x86 на приставки. Приставки (и телефоны) в большинстве своём in-order, x86 почти весь out-of-order. В случае PS3, так это вообще 1+7 ядер, все in-order, большинство ещё и с ограничениями по памяти. Для PS3 первое, что следовало сделать игропрограммисту - где всё на C++, - установить emacs с подсветкой ассемблерного синтаксиса.

Переписывание кода заключается в устранении абстракции (что означает - всем видны внутренности всего и надо знать, как этим пользоваться). x86 может выдержать один-два уровня ссылок до доступа к матрице преобразований объекта (то есть, матрица может быть отдельным объектом), приставки - нет, стоять будут-с. Поэтому доходило до совершенно странного - поля следовало указывать вот так, и никак не иначе, потому, что после "состояния" обычно использовали матрицу, а они тогда частично в кеше оказывалась.
Re: Бнопня по C++ - mpd - Oct. 4th, 2016 02:42 pm (UTC) - Expand
Re: Бнопня по C++ - thesz - Oct. 4th, 2016 03:15 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