Size: a a a

2020 April 19

NP

Nikita Petrenko in pro.cxx
Могу ссылку дать, у меня на GitHub всё лежит
источник

v

vehlwn in pro.cxx
Nikita Petrenko
Ну да, и ещё всё то же самое для !=, operator*, и без виртуальных функций (через указатели на функции, заинлайнил таблицу виртуальных вызовов фактически)
На что ты надеялся? Вместо быстрых указателей ты сделал целый класс с вирт. функциями.
источник

NP

Nikita Petrenko in pro.cxx
vehlwn
На что ты надеялся? Вместо быстрых указателей ты сделал целый класс с вирт. функциями.
Ну там не в инлайнинге дело. perf, например, говорит, что на retq дофига времени уходит
источник

v

vehlwn in pro.cxx
Nikita Petrenko
Смотрю на выход perf'а и создаётся впечатление что виртуальные итераторы не стоит делать stl-like, скорее нужно что-то вроде
struct Iterator {
  virtual T* Next() = 0;
};
В кутэ такое есть. Только виртуальных функций нет. https://doc.qt.io/qt-5/qlist-iterator.html#operator-2b-2b
источник

NP

Nikita Petrenko in pro.cxx
вот мой самый удачный эксперимент в этом направлении:
https://github.com/npetrenko/cpp_benchmarks/blob/master/virtual_iterators/src/v2.hpp
источник

NP

Nikita Petrenko in pro.cxx
vehlwn
В кутэ такое есть. Только виртуальных функций нет. https://doc.qt.io/qt-5/qlist-iterator.html#operator-2b-2b
спасибо, гляну
источник

v

vehlwn in pro.cxx
Nikita Petrenko
Смотрю на выход perf'а и создаётся впечатление что виртуальные итераторы не стоит делать stl-like, скорее нужно что-то вроде
struct Iterator {
  virtual T* Next() = 0;
};
Пахнет джавой.
источник

v

vehlwn in pro.cxx
Nikita Petrenko
спасибо, гляну
В стандартных контейнерах тоже полиморфизма нет.
источник

NP

Nikita Petrenko in pro.cxx
vehlwn
В стандартных контейнерах тоже полиморфизма нет.
мне его очень не хватает, и мне интересно, насколько сильно я должен не париться о производительности чтобы использовать виртуальные итераторы
источник

v

vehlwn in pro.cxx
Nikita Petrenko
мне его очень не хватает, и мне интересно, насколько сильно я должен не париться о производительности чтобы использовать виртуальные итераторы
Тебе мало того, что вектор на каждый пуш бек делает проверку капасити, так ты еще хочешь чтоб этот пуш бек был виртуальным?
источник

NP

Nikita Petrenko in pro.cxx
меня скорее полиморфная итерация интересует
источник

v

vehlwn in pro.cxx
Nikita Petrenko
меня скорее полиморфная итерация интересует
Ты убил все итератор треиты, которые работают на шаблонах.
источник

NP

Nikita Petrenko in pro.cxx
не понял тебя
источник

АК

Александр Караев in pro.cxx
Nikita Petrenko
Есть ли примеры удачного использования виртуальных итераторов в плюсах?

Интересуют stl-подобные итераторы, достаточно будет одних лишь forward-итераторов

Попробовал простенькие forward-итераторы реализовать, заоптимизировал всё до смерти, итерация по вектору замедлилась в 3 раза (от компилятора всё что нужно в отдельном cpp файле спрятал чтобы только время итерации мерять)
ranges - any_view
источник

AS

Anatoly Shirokov in pro.cxx
источник

B

BarnY? in pro.cxx
подскажите метод winapi, который выведет текущую загруженность озу?
источник

NP

Nikita Petrenko in pro.cxx
🔥, спасибо
источник

AM

Aleksey Muravev in pro.cxx
BarnY?
подскажите метод winapi, который выведет текущую загруженность озу?
источник

B

BarnY? in pro.cxx
спасибо
источник

DT

Danil Tolmachev in pro.cxx
Если передаю сюда класс векторов, то конструктор копирования не работает, но если убрать const  то все ок, подскажите из-за чего это происходит?
Linked_List(const Linked_List &other){
       Head->Next = Tail;
       Tail->Prev = Head;
       for(const T& elem:other){
           this->push_back(elem);
       }

   }
источник