diff options
author | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-09 05:45:17 +0000 |
---|---|---|
committer | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-09 05:45:17 +0000 |
commit | e59558b78e8c6a1b0bd916a724724b638c3c91b6 (patch) | |
tree | 712268a7e9e1cd552f309d89641b2bed5ad06322 /base/strings | |
parent | 31fcd34da3797bc49160620ef8c94a38652c0587 (diff) | |
download | chromium_src-e59558b78e8c6a1b0bd916a724724b638c3c91b6.zip chromium_src-e59558b78e8c6a1b0bd916a724724b638c3c91b6.tar.gz chromium_src-e59558b78e8c6a1b0bd916a724724b638c3c91b6.tar.bz2 |
Rewrite std::string("") to std::string(), Linux edition.
This patch was generated by running the empty_string clang tool
across the Chromium Linux compilation database. Implicitly or
explicitly constructing std::string() with a "" argument is
inefficient as the caller needs to emit extra instructions to
pass an argument, and the constructor needlessly copies a byte
into internal storage. Rewriting these instances to simply call
the default constructor appears to save ~14-18 kilobytes on an
optimized release build.
BUG=none
Review URL: https://codereview.chromium.org/13145003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193020 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/strings')
-rw-r--r-- | base/strings/string_split.cc | 3 | ||||
-rw-r--r-- | base/strings/string_split_unittest.cc | 24 |
2 files changed, 15 insertions, 12 deletions
diff --git a/base/strings/string_split.cc b/base/strings/string_split.cc index f5f19e9..819fdba 100644 --- a/base/strings/string_split.cc +++ b/base/strings/string_split.cc @@ -107,7 +107,8 @@ bool SplitStringIntoKeyValuePairs( success = false; } DCHECK_LE(value.size(), 1U); - kv_pairs->push_back(make_pair(key, value.empty()? "" : value[0])); + kv_pairs->push_back( + make_pair(key, value.empty() ? std::string() : value[0])); } return success; } diff --git a/base/strings/string_split_unittest.cc b/base/strings/string_split_unittest.cc index a950cac..6729497 100644 --- a/base/strings/string_split_unittest.cc +++ b/base/strings/string_split_unittest.cc @@ -36,9 +36,10 @@ class SplitStringIntoKeyValuesTest : public testing::Test { }; TEST_F(SplitStringIntoKeyValuesTest, EmptyInputMultipleValues) { - EXPECT_FALSE(SplitStringIntoKeyValues("", // Empty input - '\t', // Key separators - &key, &values)); + EXPECT_FALSE(SplitStringIntoKeyValues(std::string(), // Empty input + '\t', // Key separators + &key, + &values)); EXPECT_TRUE(key.empty()); EXPECT_TRUE(values.empty()); } @@ -69,9 +70,10 @@ TEST_F(SplitStringIntoKeyValuesTest, KeyWithMultipleValues) { } TEST_F(SplitStringIntoKeyValuesTest, EmptyInputSingleValue) { - EXPECT_FALSE(SplitStringIntoKeyValues("", // Empty input - '\t', // Key separators - &key, &values)); + EXPECT_FALSE(SplitStringIntoKeyValues(std::string(), // Empty input + '\t', // Key separators + &key, + &values)); EXPECT_TRUE(key.empty()); EXPECT_TRUE(values.empty()); } @@ -108,9 +110,9 @@ class SplitStringIntoKeyValuePairsTest : public testing::Test { }; TEST_F(SplitStringIntoKeyValuePairsTest, EmptyString) { - EXPECT_TRUE(SplitStringIntoKeyValuePairs("", - ':', // Key-value delimiters - ',', // Key-value pair delims + EXPECT_TRUE(SplitStringIntoKeyValuePairs(std::string(), + ':', // Key-value delimiters + ',', // Key-value pair delims &kv_pairs)); EXPECT_TRUE(kv_pairs.empty()); } @@ -153,7 +155,7 @@ TEST_F(SplitStringIntoKeyValuePairsTest, DelimiterInValue) { TEST(SplitStringUsingSubstrTest, EmptyString) { std::vector<std::string> results; - SplitStringUsingSubstr("", "DELIMITER", &results); + SplitStringUsingSubstr(std::string(), "DELIMITER", &results); ASSERT_EQ(1u, results.size()); EXPECT_THAT(results, ElementsAre("")); } @@ -162,7 +164,7 @@ TEST(SplitStringUsingSubstrTest, EmptyString) { TEST(StringUtilTest, SplitString) { std::vector<std::wstring> r; - SplitString(L"", L',', &r); + SplitString(std::wstring(), L',', &r); EXPECT_EQ(0U, r.size()); r.clear(); |