?

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. 5th, 2016 11:51 am (UTC)
Re: Бнопня по C++
Ох, это потрясение покруче, чем от поста про пиво! 8-)

Значит, меня троллят со всех сторон, да так удачно, что я - всеми лапками! :-(

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

Яву я упомянул, что там отсутствовала константность (не знаю, как сейчас) настолько, как это сделано в Си++ (константные методы экземпляров в яве? наверно, с помощью декораторов там что-то можно; было возможно объявлять неизменяемую переменную изменяемого экземпляра непримитивного типа, но было невозможно объявить переменную на неизменяемый экземпляр непримитивного типа; из-за чего аргументы по понятиям Си++ на примитивные типы всегда передавались по значению, а непримитивного - только по ссылке), но людям не мешает это для применения реализаций сложных алгоритмов на яве в продакшене. Константность в Си++ есть и очень развита. Применять или нет - решают сами. Я сталкивался, что люди не знают разницы между "MyObject * const m;" и "const MyObject * const m;". И эта свобода дана не чтобы попадать в неудачные ситуации, а чтобы - выражать точно, что ты хочешь. http://stackoverflow.com/questions/5886439/what-is-the-java-equivalent-of-cs-const-member-function

В яве устранили одну проблему, но это не говорит о том, что из-за этого улетучились остальные. В некоторых случаях - они только появились. http://lionet.livejournal.com/140057.html?thread=4611353#t4611353 - вот реальный случай, когда человек явно полагался на решение проблем со стороны явы.

Ладно, пора заканчивать эти ветки в этом посте.

Я очень надеюсь, что Льву - не выкручивали руки и не шантажировали, чтобы он снова взялся по не своему решению за программированию на Си++.
thesz
Oct. 5th, 2016 11:57 am (UTC)
Re: Бнопня по C++
Проблема владения и проблема константности свя-за-ны.

Могу я попросить у вас любезности выяснить самому, как и почему они связаны?
mpd
Oct. 5th, 2016 12:37 pm (UTC)
Re: Бнопня по C++
Да-да, спасибо!!!

Как я и сказал, можем закрывать этот сред.

Удачного окончания дня!

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