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

Side by Side Diff: base/memory/ref_counted_unittest.cc

Issue 1087083002: [Not for review] scoped_refptr move benchmark. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « base/memory/ref_counted.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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();}
OLDNEW
« no previous file with comments | « base/memory/ref_counted.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698