?

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

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

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

Profile

lionet
Lev Walkin
Website

Latest Month

December 2016
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031

Page Summary

Powered by LiveJournal.com
Designed by yoksel