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

Side by Side Diff: Source/wtf/HashTable.cpp

Issue 794223003: Cheaper thread-safe atomic initialization of static references. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add type check for initial value Created 5 years, 11 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
OLDNEW
1 /* 1 /*
2 Copyright (C) 2005 Apple Inc. All rights reserved. 2 Copyright (C) 2005 Apple Inc. All rights reserved.
3 3
4 This library is free software; you can redistribute it and/or 4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public 5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either 6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version. 7 version 2 of the License, or (at your option) any later version.
8 8
9 This library is distributed in the hope that it will be useful, 9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 17 matching lines...) Expand all
28 int HashTableStats::numAccesses; 28 int HashTableStats::numAccesses;
29 int HashTableStats::numCollisions; 29 int HashTableStats::numCollisions;
30 int HashTableStats::collisionGraph[4096]; 30 int HashTableStats::collisionGraph[4096];
31 int HashTableStats::maxCollisions; 31 int HashTableStats::maxCollisions;
32 int HashTableStats::numRehashes; 32 int HashTableStats::numRehashes;
33 int HashTableStats::numRemoves; 33 int HashTableStats::numRemoves;
34 int HashTableStats::numReinserts; 34 int HashTableStats::numReinserts;
35 35
36 static Mutex& hashTableStatsMutex() 36 static Mutex& hashTableStatsMutex()
37 { 37 {
38 AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); 38 AtomicallyInitializedStaticReference(Mutex, mutex, new Mutex);
39 return mutex; 39 return mutex;
40 } 40 }
41 41
42 void HashTableStats::recordCollisionAtCount(int count) 42 void HashTableStats::recordCollisionAtCount(int count)
43 { 43 {
44 MutexLocker lock(hashTableStatsMutex()); 44 MutexLocker lock(hashTableStatsMutex());
45 if (count > maxCollisions) 45 if (count > maxCollisions)
46 maxCollisions = count; 46 maxCollisions = count;
47 numCollisions++; 47 numCollisions++;
48 collisionGraph[count]++; 48 collisionGraph[count]++;
(...skipping 10 matching lines...) Expand all
59 for (int i = 1; i <= maxCollisions; i++) { 59 for (int i = 1; i <= maxCollisions; i++) {
60 dataLogF(" %d lookups with exactly %d collisions (%.2f%% , %.2f%% with this many or more)\n", collisionGraph[i], i, 100.0 * (collisionGraph[i] - collis ionGraph[i+1]) / numAccesses, 100.0 * collisionGraph[i] / numAccesses); 60 dataLogF(" %d lookups with exactly %d collisions (%.2f%% , %.2f%% with this many or more)\n", collisionGraph[i], i, 100.0 * (collisionGraph[i] - collis ionGraph[i+1]) / numAccesses, 100.0 * collisionGraph[i] / numAccesses);
61 } 61 }
62 dataLogF("%d rehashes\n", numRehashes); 62 dataLogF("%d rehashes\n", numRehashes);
63 dataLogF("%d reinserts\n", numReinserts); 63 dataLogF("%d reinserts\n", numReinserts);
64 } 64 }
65 65
66 #endif 66 #endif
67 67
68 } // namespace WTF 68 } // namespace WTF
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698