Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1795)

Unified Diff: mojo/public/cpp/bindings/tests/bindings_perftest.cc

Issue 2738643004: [Not for commit] Test performance impact if string validation checks whether it is utf8.
Patch Set: . Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/cpp/bindings/lib/string_serialization.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/cpp/bindings/tests/bindings_perftest.cc
diff --git a/mojo/public/cpp/bindings/tests/bindings_perftest.cc b/mojo/public/cpp/bindings/tests/bindings_perftest.cc
index 6a50de46f93bad397468017dbebec3627fed9dda..741a5e915fdb8c15aab4b5c352c2b778c55a207e 100644
--- a/mojo/public/cpp/bindings/tests/bindings_perftest.cc
+++ b/mojo/public/cpp/bindings/tests/bindings_perftest.cc
@@ -8,12 +8,14 @@
#include "base/bind.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
+#include "base/strings/stringprintf.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/interface_endpoint_client.h"
#include "mojo/public/cpp/bindings/lib/message_builder.h"
#include "mojo/public/cpp/bindings/lib/multiplex_router.h"
+#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/message.h"
#include "mojo/public/cpp/test_support/test_support.h"
#include "mojo/public/cpp/test_support/test_utils.h"
@@ -280,5 +282,48 @@ TEST_F(MojoBindingsPerftest, MultiplexRouterDispatchCost) {
}
}
-} // namespace
+void TestStringDeserializationInternal(bool utf8_check,
+ const std::string& input,
+ size_t iterations) {
+ auto data = mojo::internal::SerializeString(input);
+ std::string output;
+ for (size_t i = 0; i < 10; ++i) {
+ EXPECT_TRUE(mojo::internal::DeserializeString(utf8_check, data, &output));
+ }
+ EXPECT_EQ(input, output);
+
+ base::TimeTicks start_time = base::TimeTicks::Now();
+ for (size_t i = 0; i < iterations; ++i) {
+ EXPECT_TRUE(mojo::internal::DeserializeString(utf8_check, data, &output));
+ }
+ base::TimeTicks end_time = base::TimeTicks::Now();
+ base::TimeDelta duration = end_time - start_time;
+
+ test::LogPerfResult(utf8_check ? "DeserializeString_Utf8Check"
+ : "DeserializeString_NoUtf8Check",
+ base::StringPrintf("%lu", input.size()).c_str(),
+ iterations / duration.InSecondsF(), "times/second");
+}
+
+void TestStringDeserialization(const std::string& input, size_t iterations) {
+ TestStringDeserializationInternal(false, input, iterations);
+ TestStringDeserializationInternal(true, input, iterations);
+}
+
+std::string CreateASCIIString(size_t length) {
+ std::string result(length, 0);
+ for (size_t i = 0; i < length; ++i) {
+ result[i] = i % 128;
+ }
+ EXPECT_EQ(length, result.size());
+ return result;
+}
+
+TEST_F(MojoBindingsPerftest, String) {
+ TestStringDeserialization(CreateASCIIString(8), 10000000);
+ TestStringDeserialization(CreateASCIIString(128), 10000000);
+ TestStringDeserialization(CreateASCIIString(1024), 10000000);
+}
+
+}
} // namespace mojo
« no previous file with comments | « mojo/public/cpp/bindings/lib/string_serialization.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698