?

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

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)?

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

Да, и среди альтернативщиков, полноценная инфраструктура разработки есть практически только у Эрланга и только под свою предметную область (серверы и очень большие риалтаймовые сети), а все остальные почти голые - ни библиотек, ни проработанной экосистемы разработки.
А у плюсов есть хоть и хреновенькие но готовые экосистемы почти под всё на свете.
mpd
Oct. 3rd, 2016 07:58 pm (UTC)
Re: Бнопня по C++
Спасибо за все три последних комментария.

> Линукс это только ядро с утилитами

Нет, я тут говорил про всю систему целиком (я не зря упоминул darcs), т.е. ещё и редакторы всего, проигрователи всего, просматривалки всего, работа с интернетом (браузеры, почта, сообщения, конференции, фаилообменники, ..), офис, среды разработки и сопутствующие утилиты (VCS, компиляторы, прочие утилиты). Из того, что не собирается - Skype, Adobe Reader, Adobe Flash, JRE (может, что-то забыл). Это около тысячи пакетов.

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

Да, пока работы - хватает. Тот же Эпл, на который Лев кивал, он очень неплохо вложился в альтернативу gcc, которая становится очень даже сильной реализацией современного Си++, хотя и не была изначально нацелена на это.

Ercisson с Erlang'ом - молодцы! Своя ниша.

> Проблема не в компиляторе, а в том что у СТАНДАРТНОГО С++ очень низкий уровень абстракции, жестко заточенный на CISC процессор.

Да, согласен, не удобно, но реально, если нужно.
Да, с расширениями, интринзиками и пр.
Но ведь и обсуждаемая в этом посте у Льва фича - она не сразу в языке появилась, а сейчас, даже если о ней не знать до сих пор, она всё равно будет имплицитно использована при использовании библиотек. Т.е., язык - не стоит на месте.
Например, с нитками работать - уже давно можно было, а теперь они - в стандарте, очень гармонично и всесторонне интегрированы.
Кто знает, может через какое-то время и к новым астракциям у стандарта руки дойдут, учтя опыт других сред и языков разработки. ;-)
(на самом деле, это уже идёт, но пока "флеймит" ужасно)
zyxman
Oct. 3rd, 2016 11:25 pm (UTC)
Re: Бнопня по C++
> Нет, я тут говорил про всю систему целиком

Вы меня не поняли. Есть такой закон жизни, и как раз Лев его очень хорошо объяснил на примерах, что маленькие и даже средние организации вообще в принципе не могут соорудить свою собственную инфраструктуру - она просто слишком дорогая.

Особенно тяжело соорудить инфраструктуру для таких специфических инструментов, как Хаскел - например классические CVS с Хаскелом мягко говоря неудобны - там интерактивная разработка, как в Лиспе.

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

> Да, пока работы - хватает. Тот же Эпл, на который Лев кивал, он очень неплохо вложился в альтернативу gcc

Эпл это извините, самая большая по капитализации организация В МИРЕ.
Но даже при этом Эпл не стал делать совсем уж альтернативную систему, а сделал просто еще один клон существующей системы (ну реально gcc уже просто безумно тяжеловесный, и его слишком сложно допиливать).

Да, кстати, даже swift является вобщем эволюцией objective-c, а не революцией.
И создание swift не то что давно назрело, а очень сильно перезрело (objective-c имеет очень серьезные идеологические недостатки).
zyxman
Oct. 3rd, 2016 11:50 pm (UTC)
Re: Бнопня по C++
Вообще, раз уж вы не имеете опыта с альтернативами, то вам конечно сложно понять, что у них много отличий, не только синтаксис.

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

Что интересно, Эппл для свифта режим однострочной интерпретации реализовал, но я еще не щупал реализацию, не могу сказать похоже ли это на альтернативы.

Как я уже говорил, классические CVS не очень удобны в работе с функциональными языками, и поэтому например у Эрланга есть своя собственная система отслеживания версий.

Объектные линкеры тоже не очень подходят для функциональных языков, и поэтому функциональные тоже строят свои собственные линкеры, я тут не сильно много знаю, достаточно хорошо знаю только Эрланг, у которого виртмашина вообще по сути целый юникс и работает прямо с объектными файлами Эрланг.
mpd
Oct. 4th, 2016 08:46 am (UTC)
Re: Бнопня по C++
> вобщем это очень похоже на Питон

Да, с питоном - знаком. И в интерпретаторе - часто сижу. Даже когда хелп нужен - help(what-ever) - и вперёд!

Кстати, в Gentoo - питона много! ;-)

> Объектные линкеры тоже не очень подходят для функциональных языков, и поэтому функциональные тоже строят свои собственные линкеры, я тут не сильно много знаю, достаточно хорошо знаю только Эрланг, у которого виртмашина вообще по сути целый юникс и работает прямо с объектными файлами Эрланг.

Что-то мне подсказывает, что ждёт всё это хозяйство тоже самое, что и Яву в железе.
Вот тут https://www.youtube.com/watch?v=9ei-rbULWoA Гослинг отвечает на вопрос о Hardware Implementations of JVM Bytecode на двадцатой минуте.
И это как раз хорошо отражает слова
> маленькие и даже средние организации вообще в принципе не могут соорудить свою собственную инфраструктуру - она просто слишком дорогая.
Оказывается, не только маленькие.

Но, ничего, может и будет прорыв. Начнут с какой-нибудь FPGA... Или - уже.
anonim_legion
Oct. 4th, 2016 03:14 pm (UTC)
Потому что под линуксы не пишут ничего И открытого И нетривиального. Потому что с нетривиальными областями у опенсорца вообще туго. Байтики перекладывать они могут, емейлы посылать, или там - "резиновый" диск сделать на LVM.

А вот например сделать ИИ для single-player опенсорцной игры уже не могут. И то же машинное зрение - оно вышло вовсе не из тех мест, где ваяют ядро, или допиливают дырки в bind. Вещи вроде Apache Cassandra тоже не на си с дырками написаны.
mpd
Oct. 4th, 2016 05:05 pm (UTC)
Re: под линуксы не пишут ничего И открытого И нетривиаль
Большое спасибо за ваше мнение!

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