OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/memory/ref_counted.h" | 5 #include "base/memory/ref_counted.h" |
6 | 6 |
7 #include "base/test/opaque_ref_counted.h" | 7 #include "base/test/opaque_ref_counted.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace { | 10 namespace { |
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 EXPECT_EQ(1, ScopedRefPtrCountDerived::destructor_count()); | 453 EXPECT_EQ(1, ScopedRefPtrCountDerived::destructor_count()); |
454 | 454 |
455 // p1 goes out of scope. | 455 // p1 goes out of scope. |
456 } | 456 } |
457 EXPECT_EQ(1, ScopedRefPtrCountBase::constructor_count()); | 457 EXPECT_EQ(1, ScopedRefPtrCountBase::constructor_count()); |
458 EXPECT_EQ(1, ScopedRefPtrCountBase::destructor_count()); | 458 EXPECT_EQ(1, ScopedRefPtrCountBase::destructor_count()); |
459 EXPECT_EQ(1, ScopedRefPtrCountDerived::constructor_count()); | 459 EXPECT_EQ(1, ScopedRefPtrCountDerived::constructor_count()); |
460 EXPECT_EQ(1, ScopedRefPtrCountDerived::destructor_count()); | 460 EXPECT_EQ(1, ScopedRefPtrCountDerived::destructor_count()); |
461 } | 461 } |
462 | 462 |
| 463 static const int N = 16 * 1000 * 1000; |
| 464 |
| 465 void BenchmarkUnsafeMove() { |
| 466 scoped_refptr<ThreadUnsafe> p(new ThreadUnsafe()); |
| 467 for (int i = 0; i < N; ++i) { |
| 468 p = get_thread_unsafe(); |
| 469 } |
| 470 } |
| 471 |
| 472 |
| 473 void BenchmarkUnsafeCopy() { |
| 474 scoped_refptr<ThreadUnsafe> p(new ThreadUnsafe()); |
| 475 for (int i = 0; i < N; ++i) { |
| 476 p = static_cast<const scoped_refptr<ThreadUnsafe>&>(get_thread_unsafe()); |
| 477 } |
| 478 } |
| 479 |
| 480 void BenchmarkSafeMove() { |
| 481 scoped_refptr<ThreadSafe> p(new ThreadSafe()); |
| 482 for (int i = 0; i < N; ++i) { |
| 483 p = get_thread_safe(); |
| 484 } |
| 485 } |
| 486 |
| 487 void BenchmarkSafeCopy() { |
| 488 scoped_refptr<ThreadSafe> p(new ThreadSafe()); |
| 489 for (int i = 0; i < N; ++i) { |
| 490 p = static_cast<const scoped_refptr<ThreadSafe>&>(get_thread_safe()); |
| 491 } |
| 492 } |
| 493 |
| 494 TEST(RefCountedUnitTest, BenchmarkUnsafeMove1) {BenchmarkUnsafeMove();} |
| 495 TEST(RefCountedUnitTest, BenchmarkUnsafeMove2) {BenchmarkUnsafeMove();} |
| 496 TEST(RefCountedUnitTest, BenchmarkUnsafeMove3) {BenchmarkUnsafeMove();} |
| 497 |
| 498 TEST(RefCountedUnitTest, BenchmarkUnsafeCopy1) {BenchmarkUnsafeCopy();} |
| 499 TEST(RefCountedUnitTest, BenchmarkUnsafeCopy2) {BenchmarkUnsafeCopy();} |
| 500 TEST(RefCountedUnitTest, BenchmarkUnsafeCopy3) {BenchmarkUnsafeCopy();} |
| 501 |
| 502 TEST(RefCountedUnitTest, BenchmarkSafeMove1) {BenchmarkSafeMove();} |
| 503 TEST(RefCountedUnitTest, BenchmarkSafeMove2) {BenchmarkSafeMove();} |
| 504 TEST(RefCountedUnitTest, BenchmarkSafeMove3) {BenchmarkSafeMove();} |
| 505 |
| 506 TEST(RefCountedUnitTest, BenchmarkSafeCopy1) {BenchmarkSafeCopy();} |
| 507 TEST(RefCountedUnitTest, BenchmarkSafeCopy2) {BenchmarkSafeCopy();} |
| 508 TEST(RefCountedUnitTest, BenchmarkSafeCopy3) {BenchmarkSafeCopy();} |
OLD | NEW |