| 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();}
|
|
|