[libcxx-commits] [PATCH] D124122: [libc++] Optimize std::rotate

Nikolas Klauser via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sat Apr 23 11:45:04 PDT 2022


philnik added a comment.

It looks like it is indeed a bit faster for structs that are expensive to move. I'll enable the optimization for non-trivially_move_constructible types and ones that are larger than 32 bytes.

  ------------------------------------------------------------------
  Benchmark                                    old Time     new Time
  ------------------------------------------------------------------
  BM_Rotate_ExpensiveToMove_Random_1            10.4 ns      10.5 ns
  BM_Rotate_ExpensiveToMove_Random_4             300 ns       301 ns
  BM_Rotate_ExpensiveToMove_Random_16           1299 ns      1363 ns
  BM_Rotate_ExpensiveToMove_Random_64           5401 ns      6023 ns
  BM_Rotate_ExpensiveToMove_Random_256         21964 ns     24717 ns
  BM_Rotate_ExpensiveToMove_Random_1024        89849 ns    101480 ns
  BM_Rotate_ExpensiveToMove_Random_16384     1550789 ns   1732624 ns
  BM_Rotate_ExpensiveToMove_Random_262144   30205994 ns  35608461 ns

@var-const The non-trivially-copyable part should be covered by string, or did you have something more specific in mind?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124122/new/

https://reviews.llvm.org/D124122



More information about the libcxx-commits mailing list