Size: a a a

2020 July 16

m

magras in pro.cxx
Александр Караев
имхо, есть смысл на аллокаторе сразу делать small_vector
Но это будет не совсем классический SBO, потому что будет происходить динамическая аллокация, а основное преимущество SBO, как раз в том, что ее можно избежать.
источник

АК

Александр Караев... in pro.cxx
magras
Но это будет не совсем классический SBO, потому что будет происходить динамическая аллокация, а основное преимущество SBO, как раз в том, что ее можно избежать.
я имею в виду стейтфул аллокатор с местом под SOO
источник

AT

Anatoly Tomilov in pro.cxx
magras
Но это будет не совсем классический SBO, потому что будет происходить динамическая аллокация, а основное преимущество SBO, как раз в том, что ее можно избежать.
allocator — этот data member std::vector-а. так что всё норм
источник

DF

Dollar Føølish in pro.cxx
Ebo по моему
источник

AT

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

DF

Dollar Føølish in pro.cxx
Типа эмпти бейз
источник

AT

Anatoly Tomilov in pro.cxx
small buffer optimization — вроде бы распространено
источник

m

magras in pro.cxx
Александр Караев
я имею в виду стейтфул аллокатор с местом под SOO
Да, вы правы. Если правильно настроить политики копирования аллокатора, наверное, это будет работать.
источник

АК

Александр Караев... in pro.cxx
Anatoly Tomilov
small buffer optimization — вроде бы распространено
да, согласен, я что-то начудил с терминологией
источник

AT

Anatoly Tomilov in pro.cxx
magras
Да, вы правы. Если правильно настроить политики копирования аллокатора, наверное, это будет работать.
что только будет при копировании вектора со статической/динамической памятью в пустой, либо непустой со статической/динамической памятью (6 вариантов)? может неоптимально получиться. А что при перемещении? Может оказаться, что всё не так хорошо
источник

AN

Alexander N in pro.cxx
Anatoly Tomilov
optional тоже через union реализуют
Я такое в libc++ и видел
источник

AT

Anatoly Tomilov in pro.cxx
я впервые у этого чувака про это читал https://akrzemi1.wordpress.com/2015/07/15/efficient-optional-values/ https://github.com/akrzemi1/Optional
источник

m

magras in pro.cxx
Anatoly Tomilov
что только будет при копировании вектора со статической/динамической памятью в пустой, либо непустой со статической/динамической памятью (6 вариантов)? может неоптимально получиться. А что при перемещении? Может оказаться, что всё не так хорошо
Есть три property для аллокатора: propagate_on_container_{copy,move,swap} На сколько я помню, они управляют тем будет ли копироваться аллокатор или данные будут перемещаться между аллокаторами.
источник

AT

Anatoly Tomilov in pro.cxx
magras
Есть три property для аллокатора: propagate_on_container_{copy,move,swap} На сколько я помню, они управляют тем будет ли копироваться аллокатор или данные будут перемещаться между аллокаторами.
это здорово, что предусмотрели
источник

m

magras in pro.cxx
Anatoly Tomilov
это здорово, что предусмотрели
Мне кажется swap и move assignment сложно реализовать эффективно в такой семантике, потому что вектор не знает, где аллокатор выделил память и он не сможет просто свопнуть указатели.
источник

F

FailsBot in pro.cxx
Keep it logically awesome.
источник

m

magras in pro.cxx
magras
Мне кажется swap и move assignment сложно реализовать эффективно в такой семантике, потому что вектор не знает, где аллокатор выделил память и он не сможет просто свопнуть указатели.
Кажется, этим можно управлять в рантайме через оператор сравнения аллокатора. Если propagate_on_container_move_assignment is false, но сравнение исходного и целевого аллокатора дают true, вектор вроде просто свопнет указатели. Но для того, чтобы это работало, нужно чтобы аллокатор знал используется ли его внутренний буфер.
источник
2020 July 17

D

Dmitry in pro.cxx
Сижу туплю. Надо system_clock::time_point в любую читабельную строку. Goggle сует только unsafe std::ctime(). Есть что-то еще?
источник

IZ

Ilia Zviagin in pro.cxx
Dmitry
Сижу туплю. Надо system_clock::time_point в любую читабельную строку. Goggle сует только unsafe std::ctime(). Есть что-то еще?
чем ctime не нравится?
источник

D

Dmitry in pro.cxx
Ilia Zviagin
чем ctime не нравится?
C4996  'ctime': This function or variable may be unsafe. Consider using ctime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
источник