Index: base/memory/ref_counted_unittest.cc |
diff --git a/base/memory/ref_counted_unittest.cc b/base/memory/ref_counted_unittest.cc |
index 6f8e599cbdc970728d4a035528f68a4eb69acd9c..00b390fe3f2fac7823c3ac7823d768904f0f4e64 100644 |
--- a/base/memory/ref_counted_unittest.cc |
+++ b/base/memory/ref_counted_unittest.cc |
@@ -460,3 +460,49 @@ TEST(RefCountedUnitTest, MoveConstructorDerived) { |
EXPECT_EQ(1, ScopedRefPtrCountDerived::destructor_count()); |
} |
+static const int N = 16 * 1000 * 1000; |
+ |
+void BenchmarkUnsafeMove() { |
+ scoped_refptr<ThreadUnsafe> p(new ThreadUnsafe()); |
+ for (int i = 0; i < N; ++i) { |
+ p = get_thread_unsafe(); |
+ } |
+} |
+ |
+ |
+void BenchmarkUnsafeCopy() { |
+ scoped_refptr<ThreadUnsafe> p(new ThreadUnsafe()); |
+ for (int i = 0; i < N; ++i) { |
+ p = static_cast<const scoped_refptr<ThreadUnsafe>&>(get_thread_unsafe()); |
+ } |
+} |
+ |
+void BenchmarkSafeMove() { |
+ scoped_refptr<ThreadSafe> p(new ThreadSafe()); |
+ for (int i = 0; i < N; ++i) { |
+ p = get_thread_safe(); |
+ } |
+} |
+ |
+void BenchmarkSafeCopy() { |
+ scoped_refptr<ThreadSafe> p(new ThreadSafe()); |
+ for (int i = 0; i < N; ++i) { |
+ p = static_cast<const scoped_refptr<ThreadSafe>&>(get_thread_safe()); |
+ } |
+} |
+ |
+TEST(RefCountedUnitTest, BenchmarkUnsafeMove1) {BenchmarkUnsafeMove();} |
+TEST(RefCountedUnitTest, BenchmarkUnsafeMove2) {BenchmarkUnsafeMove();} |
+TEST(RefCountedUnitTest, BenchmarkUnsafeMove3) {BenchmarkUnsafeMove();} |
+ |
+TEST(RefCountedUnitTest, BenchmarkUnsafeCopy1) {BenchmarkUnsafeCopy();} |
+TEST(RefCountedUnitTest, BenchmarkUnsafeCopy2) {BenchmarkUnsafeCopy();} |
+TEST(RefCountedUnitTest, BenchmarkUnsafeCopy3) {BenchmarkUnsafeCopy();} |
+ |
+TEST(RefCountedUnitTest, BenchmarkSafeMove1) {BenchmarkSafeMove();} |
+TEST(RefCountedUnitTest, BenchmarkSafeMove2) {BenchmarkSafeMove();} |
+TEST(RefCountedUnitTest, BenchmarkSafeMove3) {BenchmarkSafeMove();} |
+ |
+TEST(RefCountedUnitTest, BenchmarkSafeCopy1) {BenchmarkSafeCopy();} |
+TEST(RefCountedUnitTest, BenchmarkSafeCopy2) {BenchmarkSafeCopy();} |
+TEST(RefCountedUnitTest, BenchmarkSafeCopy3) {BenchmarkSafeCopy();} |