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

Side by Side Diff: base/metrics/histogram_unittest.cc

Issue 1803253002: Improved iterator for persistent memory allocator. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@refactor-hp
Patch Set: rebased Created 4 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 | « no previous file | base/metrics/persistent_histogram_allocator.h » ('j') | 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/metrics/histogram.h" 5 #include "base/metrics/histogram.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 // Create all histogram names in advance for accurate timing below. 607 // Create all histogram names in advance for accurate timing below.
608 std::vector<std::string> histogram_names; 608 std::vector<std::string> histogram_names;
609 for (int i = 0; i < kTestCreateCount; ++i) { 609 for (int i = 0; i < kTestCreateCount; ++i) {
610 histogram_names.push_back( 610 histogram_names.push_back(
611 StringPrintf("TestHistogram.%d", i % kTestCreateCount)); 611 StringPrintf("TestHistogram.%d", i % kTestCreateCount));
612 } 612 }
613 613
614 // Calculate cost of creating histograms. 614 // Calculate cost of creating histograms.
615 TimeTicks create_start = TimeTicks::Now(); 615 TimeTicks create_start = TimeTicks::Now();
616 for (int i = 0; i < kTestCreateCount; ++i) { 616 for (int i = 0; i < kTestCreateCount; ++i) {
617 Histogram::FactoryGet(histogram_names[i], 0, 100, 10, 617 Histogram::FactoryGet(histogram_names[i], 1, 100, 10,
618 HistogramBase::kNoFlags); 618 HistogramBase::kNoFlags);
619 } 619 }
620 TimeDelta create_ticks = TimeTicks::Now() - create_start; 620 TimeDelta create_ticks = TimeTicks::Now() - create_start;
621 int64_t create_ms = create_ticks.InMilliseconds(); 621 int64_t create_ms = create_ticks.InMilliseconds();
622 622
623 VLOG(1) << kTestCreateCount << " histogram creations took " << create_ms 623 VLOG(1) << kTestCreateCount << " histogram creations took " << create_ms
624 << "ms or about " 624 << "ms or about "
625 << (create_ms * 1000000) / kTestCreateCount 625 << (create_ms * 1000000) / kTestCreateCount
626 << "ns each."; 626 << "ns each.";
627 627
628 // Calculate cost of looking up existing histograms. 628 // Calculate cost of looking up existing histograms.
629 TimeTicks lookup_start = TimeTicks::Now(); 629 TimeTicks lookup_start = TimeTicks::Now();
630 for (int i = 0; i < kTestLookupCount; ++i) { 630 for (int i = 0; i < kTestLookupCount; ++i) {
631 // 6007 is co-prime with kTestCreateCount and so will do lookups in an 631 // 6007 is co-prime with kTestCreateCount and so will do lookups in an
632 // order less likely to be cacheable (but still hit them all) should the 632 // order less likely to be cacheable (but still hit them all) should the
633 // underlying storage use the exact histogram name as the key. 633 // underlying storage use the exact histogram name as the key.
634 const int i_mult = 6007; 634 const int i_mult = 6007;
635 static_assert(i_mult < INT_MAX / kTestCreateCount, "Multiplier too big"); 635 static_assert(i_mult < INT_MAX / kTestCreateCount, "Multiplier too big");
636 int index = (i * i_mult) & (kTestCreateCount - 1); 636 int index = (i * i_mult) & (kTestCreateCount - 1);
637 Histogram::FactoryGet(histogram_names[index], 0, 100, 10, 637 Histogram::FactoryGet(histogram_names[index], 1, 100, 10,
638 HistogramBase::kNoFlags); 638 HistogramBase::kNoFlags);
639 } 639 }
640 TimeDelta lookup_ticks = TimeTicks::Now() - lookup_start; 640 TimeDelta lookup_ticks = TimeTicks::Now() - lookup_start;
641 int64_t lookup_ms = lookup_ticks.InMilliseconds(); 641 int64_t lookup_ms = lookup_ticks.InMilliseconds();
642 642
643 VLOG(1) << kTestLookupCount << " histogram lookups took " << lookup_ms 643 VLOG(1) << kTestLookupCount << " histogram lookups took " << lookup_ms
644 << "ms or about " 644 << "ms or about "
645 << (lookup_ms * 1000000) / kTestLookupCount 645 << (lookup_ms * 1000000) / kTestLookupCount
646 << "ns each."; 646 << "ns each.";
647 647
648 // Calculate cost of accessing histograms. 648 // Calculate cost of accessing histograms.
649 HistogramBase* histogram = Histogram::FactoryGet( 649 HistogramBase* histogram = Histogram::FactoryGet(
650 histogram_names[0], 0, 100, 10, HistogramBase::kNoFlags); 650 histogram_names[0], 1, 100, 10, HistogramBase::kNoFlags);
651 ASSERT_TRUE(histogram); 651 ASSERT_TRUE(histogram);
652 TimeTicks add_start = TimeTicks::Now(); 652 TimeTicks add_start = TimeTicks::Now();
653 for (int i = 0; i < kTestAddCount; ++i) 653 for (int i = 0; i < kTestAddCount; ++i)
654 histogram->Add(i & 127); 654 histogram->Add(i & 127);
655 TimeDelta add_ticks = TimeTicks::Now() - add_start; 655 TimeDelta add_ticks = TimeTicks::Now() - add_start;
656 int64_t add_ms = add_ticks.InMilliseconds(); 656 int64_t add_ms = add_ticks.InMilliseconds();
657 657
658 VLOG(1) << kTestAddCount << " histogram adds took " << add_ms 658 VLOG(1) << kTestAddCount << " histogram adds took " << add_ms
659 << "ms or about " 659 << "ms or about "
660 << (add_ms * 1000000) / kTestAddCount 660 << (add_ms * 1000000) / kTestAddCount
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 // CustomHistogram needs at least 1 valid range. 702 // CustomHistogram needs at least 1 valid range.
703 custom_ranges.clear(); 703 custom_ranges.clear();
704 custom_ranges.push_back(0); 704 custom_ranges.push_back(0);
705 EXPECT_DEATH(CustomHistogram::FactoryGet("BadRangesCustom3", custom_ranges, 705 EXPECT_DEATH(CustomHistogram::FactoryGet("BadRangesCustom3", custom_ranges,
706 HistogramBase::kNoFlags), 706 HistogramBase::kNoFlags),
707 ""); 707 "");
708 } 708 }
709 #endif 709 #endif
710 710
711 } // namespace base 711 } // namespace base
OLDNEW
« no previous file with comments | « no previous file | base/metrics/persistent_histogram_allocator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698