Size: a a a

2020 June 03

A

Alex in pro.cxx
у меня другой юз кейс, хочу сделать полный аналог вектора, но на стеке и мув онли. С fallback на динамическое выделение при нехватке буфера, memory_resource это прозрачно поддерживает.
источник

A

Alex in pro.cxx
только сам resource для этого нужно выделить динамически, фэйл
источник

A

Alex in pro.cxx
хотя нет, так не получится, адрес буфера-то будет меняться при муве. Эх.
источник

A

Alex in pro.cxx
как обычно в С++ всё через задницу, фич много, а пользоваться ими нельзя
источник

A

Alex in pro.cxx
Точнее, не в С++, а в его стандартной библиотеке
источник

m

magras in pro.cxx
Alex
у меня другой юз кейс, хочу сделать полный аналог вектора, но на стеке и мув онли. С fallback на динамическое выделение при нехватке буфера, memory_resource это прозрачно поддерживает.
Это называется small buffer optimization. Да, стандарт не позволяет его тюнить.
источник

A

Alex in pro.cxx
Может, моя идея сработает, если не подставлять в конструктор monotonic_buffer_resource внешний буфер, а использовать его внутренний?
источник

m

magras in pro.cxx
Alex
у меня другой юз кейс, хочу сделать полный аналог вектора, но на стеке и мув онли. С fallback на динамическое выделение при нехватке буфера, memory_resource это прозрачно поддерживает.
В folly вроде есть готовый класс: https://github.com/facebook/folly/blob/master/folly/docs/small_vector.md
источник

A

Alex in pro.cxx
а сам monotonic_buffer_resource выделить динамически и таскать по указателю
источник

A

Alex in pro.cxx
да и в бусте наверняка есть, вопрос в сложности реализации (количестве кода). С pmr должно быть ну очень просто, по идее.
источник

A

Alex in pro.cxx
Alex
Может, моя идея сработает, если не подставлять в конструктор monotonic_buffer_resource внешний буфер, а использовать его внутренний?
Фигню я придумал. Раз уж всё равно одно выделение будет, это то же самое, что сделать в конструкторе  вектора reserve на те же 64 Кбайт или сколько там задача предполагает. Так даже эффективнее и проще.
источник

A

Alex in pro.cxx
Как я и думал, 1300 строк кода и дюжина инклудов, включая половину буста. Совсем не трививальная вещь.
https://github.com/facebook/folly/blob/master/folly/small_vector.h
источник

DF

Dollar Føølish in pro.cxx
Фолли от буста зависит? Кек
источник

АК

Александр Караев... in pro.cxx
Alex
у меня другой юз кейс, хочу сделать полный аналог вектора, но на стеке и мув онли. С fallback на динамическое выделение при нехватке буфера, memory_resource это прозрачно поддерживает.
вот задачка: почему для std::vector<T> не реализована оптимизация small object optimization?
источник

m

magras in pro.cxx
Alex
а сам monotonic_buffer_resource выделить динамически и таскать по указателю
На всякий случай уточню, что monotonic_buffer_resource ничего не выделяет, а использует memory_resource. И я не понимаю зачем он здесь вообще.
источник

A

Alex in pro.cxx
Александр Караев
вот задачка: почему для std::vector<T> не реализована оптимизация small object optimization?
из-за необходимости использовать аллокатор?
источник

DF

Dollar Føølish in pro.cxx
+
источник

DF

Dollar Føølish in pro.cxx
Я тоже так подумал
источник

АК

Александр Караев... in pro.cxx
Alex
из-за необходимости использовать аллокатор?
а в чем отличие от string? :)
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Александр Караев
вот задачка: почему для std::vector<T> не реализована оптимизация small object optimization?
Что-то с инвалидацией итераторов
источник