[PATCH] D80830: [clang-format] [PR46130] When editing a file with unbalance {} the namespace comment fixer can incorrectly comment the wrong closing brace

MyDeveloperDay via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat May 30 05:16:40 PDT 2020


MyDeveloperDay added a comment.

We don't really have any performance tests, but the following shows some analysis, all builds are release build:

- clang-format-ns is built with this change (compiled with VS2017)
- clang-format is without (compiled with VS2017)
- c:/Program\ Files/LLVM/bin/clang-format is the last Feb 2020 snapshot build version of clang-format  (probably compiled with clang-cl)
- build_release_cl/clang-format with this change  (compiled with clang-cl from Fab2020 snapshot) _ build_2019/clang-format with this change (compiled with VS2019)

The test is to run clang-format over the largest file in LLVM

./libcxxabi/test/test_demangle.pass.cpp is 5.2M in size = 30,000 lines, 29799 opening and closing braces

For a file this size I think I'd expect IO to dominate (I'm running this test on an Intel i7-800 CPU @3,.20GHz with an SSD, Running cygwin in Windows 10)

I've run these tests multiple times and they are often the same or similar timings (I'm running the base clang-format as a benchmark twice because the first run is often slower

  time /clang/build_release/bin/clang-format ../libcxxabi/test/test_demangle.pass.cpp > speed1 (Baseline to get test_demangle.pass.cpp into system cache)
  
  real    0m3.957s
  user    0m0.000s
  sys     0m0.000s
  
  time /clang/build_release/bin/clang-format-ns ../libcxxabi/test/test_demangle.pass.cpp > speed1
  
  real    0m3.994s
  user    0m0.000s
  sys     0m0.000s
  time /clang/build_release/bin/clang-format ../libcxxabi/test/test_demangle.pass.cpp > speed1
  
  real    0m3.990s
  user    0m0.000s
  sys     0m0.000s
  
  time  c:/Program\ Files/LLVM/bin/clang-format ../libcxxabi/test/test_demangle.pass.cpp > speed1
  
  real    0m3.793s
  user    0m0.000s
  sys     0m0.000s
  
  time /clang/build_release_cl/bin/clang-format ../libcxxabi/test/test_demangle.pass.cpp > speed1
  
  real    0m3.442s
  user    0m0.000s
  sys     0m0.000s
  
  time /clang/build_2019/bin/clang-format ../libcxxabi/test/test_demangle.pass.cpp > speed1
  
  real    0m3.820s
  user    0m0.000s
  sys     0m0.000s

The speed difference of this change of clang-format is fairly negligible, varying by about +/-20ms one way or the other (often swinging the other between runs or depending on which goes first)

I feel this change is relatively low impact, (perhaps the loop could be moved into some earlier equivalent loop but for clarity, I think it's ok here for now.)

I'm not 100% sure how we could reliably test performance generally in clang-format, but I think it would be good to have something.

The key takeaway is likely that clang-cl is quicker! and it obviously more about which compiler you choose.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D80830





More information about the cfe-commits mailing list