Size: a a a

2020 October 13

O

Ofee in pro.cxx
Dmitry Sokolov
А чего в сам ns не внести adl friendly штуки, типа ns::traits? Или "функций оч. много, лень?"
Я просто рассматриваю различные способы расширения, если возможно добиться поведения, описанного мной, хотелось бы об этом знать заранее и учитывать его в своих экспериментах
источник

A

Alex in pro.cxx
Такой член данных требует ручного определения конструктора копирования, оператора присваивания и прочих?
struct A {
  int a[4];
};
источник

O

Ofee in pro.cxx
PRoSToC0der
tag_invoke не подходит?
Собственно, я и начал экспериментировать благодаря нему, просто рассматриваю альтернативные возможности
источник

D

Dmitriy in pro.cxx
Alex
Такой член данных требует ручного определения конструктора копирования, оператора присваивания и прочих?
struct A {
  int a[4];
};
Нет
источник

A

Alex in pro.cxx
Спасибо
источник

o

olologin in pro.cxx
Господа, а реализации malloc/new например в glibc (или в MSVC) выдают указатель выравненный по размеру cacheline'а?
источник

o

olologin in pro.cxx
Т.е если на x86 Cacheline 64 байта - будет ли под это дело подгоняться выделенный кусок памяти?
источник

o

olologin in pro.cxx
А, всё. Нагуглил. Не подгоняет оно ничего.
источник

o

olologin in pro.cxx
источник

o

olologin in pro.cxx
Ну вот тут чувак говорит что подгоняет под 16-байтные границы
источник

o

olologin in pro.cxx
Не кэшлайн но всё-равно
источник

D

Danya in pro.cxx
В библиотеке Intel TBB / oneTBB есть аллокатор, который выделяет память под кеш линию
источник

D

Danya in pro.cxx
tbb::cache_aligned_allocator
источник

D

Danya in pro.cxx
Вроде так
источник

o

olologin in pro.cxx
Ага, да мне не надо. Я просто размышляю о том какой может быть оверхед от std::vector, понятное дело что внутри есть указатель, size и capacity. Но дальше возникает вопрос о скрытом оверхеде от malloc/new который использован внутри.
источник

o

olologin in pro.cxx
Нашёл в коде прикольное место где куча мелких std::vector выделяется, как фиксить это я понимаю, но интересно оценить насколько я уменьшаю потребление. Хотя наверное проще замерить.
источник

OL

Oleg Linkin in pro.cxx
Использовать mutable для того, чтобы сделать lazy-initialization в const геттере - плохой дизайн или лучше убрать конст с функции?
источник

V

Vyacheslav in pro.cxx
olologin
Ага, да мне не надо. Я просто размышляю о том какой может быть оверхед от std::vector, понятное дело что внутри есть указатель, size и capacity. Но дальше возникает вопрос о скрытом оверхеде от malloc/new который использован внутри.
А с какой целью аллокатор меняете? Hot path optimization или, наоборот, потребление памяти уменьшаете?
источник

OL

Oleg Linkin in pro.cxx
olologin
Нашёл в коде прикольное место где куча мелких std::vector выделяется, как фиксить это я понимаю, но интересно оценить насколько я уменьшаю потребление. Хотя наверное проще замерить.
для маленьких векторов есть бустовый вектор, который на стеке делается, емнип
источник

o

olologin in pro.cxx
Oleg Linkin
для маленьких векторов есть бустовый вектор, который на стеке делается, емнип
Да, но в данном случае я могу вынести эту логику вообще в отдельное место, и там вместо кучи мелких векторов иметь один большой
источник