?

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

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

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