Index: net/base/mime_sniffer_perftest.cc |
diff --git a/net/base/mime_sniffer_perftest.cc b/net/base/mime_sniffer_perftest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c8a1f656ca64ca446f5fa3ae1b04e5e7584e6c12 |
--- /dev/null |
+++ b/net/base/mime_sniffer_perftest.cc |
@@ -0,0 +1,34 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "net/base/mime_sniffer.h" |
+ |
+#include <vector> |
+ |
+#include "base/test/perf_time_logger.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace net { |
+namespace { |
+ |
+TEST(MimeSnifferTest, FastPathPerfTest) { |
asanka
2015/04/29 23:17:44
Not very keen on this type of perftest that measur
Adam Rice
2015/05/07 16:52:50
I don't expect micro-benchmarks to be representati
asanka
2015/05/12 19:20:41
Interesting. Thanks for running the tests. I also
|
+ std::vector<char> plaintext(1 << 28, ' '); |
+ base::PerfTimeLogger timer("MimeSnifferFastPathPerf_256MB"); |
+ ContainsControlCodes(&plaintext[0], plaintext.size()); |
+} |
+ |
+TEST(MimeSnifferTest, SlowPathPerfTest) { |
+ const size_t target_size = 1 << 28; |
+ // The control characters force the code to do an array lookup. The "a" is |
+ // there to make branch prediction harder. |
+ std::string plaintext = "\ta\r\n"; |
+ plaintext.reserve(target_size); |
+ while (plaintext.size() < target_size) |
+ plaintext += plaintext; |
+ base::PerfTimeLogger timer("MimeSnifferSlowPathPerf_256MB"); |
+ ContainsControlCodes(&plaintext[0], plaintext.size()); |
+} |
+ |
+} // namespace net |
+} // namespace |