[clang-tools-extra] r235192 - [clang-tidy] Remove static StringSet in favor of binary search.

Benjamin Kramer benny.kra at googlemail.com
Fri Apr 17 06:52:08 PDT 2015


Author: d0k
Date: Fri Apr 17 08:52:08 2015
New Revision: 235192

URL: http://llvm.org/viewvc/llvm-project?rev=235192&view=rev
Log:
[clang-tidy] Remove static StringSet in favor of binary search.

The number of strings is so small that performance doesn't matter and adding
the thread safe static initialization and destruction overhead is just not
worth it. No functional change intended.

Modified:
    clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
    clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp

Modified: clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp?rev=235192&r1=235191&r2=235192&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp Fri Apr 17 08:52:08 2015
@@ -11,35 +11,31 @@
 #include "clang/ASTMatchers/ASTMatchers.h"
 #include "clang/Lex/Lexer.h"
 #include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/StringSet.h"
 
 using namespace clang::ast_matchers;
 
-namespace {
-bool isContainer(llvm::StringRef ClassName) {
-  static const llvm::StringSet<> ContainerNames = [] {
-    llvm::StringSet<> RetVal;
-    RetVal.insert("std::vector");
-    RetVal.insert("std::list");
-    RetVal.insert("std::array");
-    RetVal.insert("std::deque");
-    RetVal.insert("std::forward_list");
-    RetVal.insert("std::set");
-    RetVal.insert("std::map");
-    RetVal.insert("std::multiset");
-    RetVal.insert("std::multimap");
-    RetVal.insert("std::unordered_set");
-    RetVal.insert("std::unordered_map");
-    RetVal.insert("std::unordered_multiset");
-    RetVal.insert("std::unordered_multimap");
-    RetVal.insert("std::stack");
-    RetVal.insert("std::queue");
-    RetVal.insert("std::priority_queue");
-    return RetVal;
-  }();
-  return ContainerNames.find(ClassName) != ContainerNames.end();
+static bool isContainer(llvm::StringRef ClassName) {
+  static const char *ContainerNames[] = {
+    "std::array",
+    "std::deque",
+    "std::forward_list",
+    "std::list",
+    "std::map",
+    "std::multimap",
+    "std::multiset",
+    "std::priority_queue",
+    "std::queue",
+    "std::set",
+    "std::stack",
+    "std::unordered_map",
+    "std::unordered_multimap",
+    "std::unordered_multiset",
+    "std::unordered_set",
+    "std::vector"
+  };
+  return std::binary_search(std::begin(ContainerNames),
+                            std::end(ContainerNames), ClassName);
 }
-} // namespace
 
 namespace clang {
 namespace ast_matchers {

Modified: clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp?rev=235192&r1=235191&r2=235192&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp Fri Apr 17 08:52:08 2015
@@ -12,22 +12,18 @@
 #include "clang/ASTMatchers/ASTMatchFinder.h"
 #include "clang/Lex/Lexer.h"
 #include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/StringSet.h"
 
 using namespace clang::ast_matchers;
 
-namespace {
-bool isShrinkableContainer(llvm::StringRef ClassName) {
-  static const llvm::StringSet<> Shrinkables = [] {
-    llvm::StringSet<> RetVal;
-    RetVal.insert("std::deque");
-    RetVal.insert("std::basic_string");
-    RetVal.insert("std::vector");
-    return RetVal;
-  }();
-  return Shrinkables.find(ClassName) != Shrinkables.end();
+static bool isShrinkableContainer(llvm::StringRef ClassName) {
+  static const char *Shrinkables[] = {
+    "std::basic_string",
+    "std::deque",
+    "std::vector"
+  };
+  return std::binary_search(std::begin(Shrinkables), std::end(Shrinkables),
+                            ClassName);
 }
-} // namespace
 
 namespace clang {
 namespace ast_matchers {





More information about the cfe-commits mailing list