?

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

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

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

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

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