[gnome-shell] Hash: make .size() constant time
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] Hash: make .size() constant time
- Date: Sun, 12 May 2013 19:07:01 +0000 (UTC)
commit b0dc841e00d2f99af4bdfbe60800c74f0c89f50c
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sun May 12 20:13:08 2013 +0200
Hash: make .size() constant time
MessageTray calls .size() very often to update the no messages label,
so a linear time implementation is not good enough.
https://bugzilla.gnome.org/show_bug.cgi?id=700194
js/misc/hash.js | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/js/misc/hash.js b/js/misc/hash.js
index 19d4df6..db70d65 100644
--- a/js/misc/hash.js
+++ b/js/misc/hash.js
@@ -58,6 +58,7 @@ const Map = new Lang.Class({
_init: function(iterable) {
this._pool = { };
+ this._size = 0;
if (iterable) {
for (let i = 0; i < iterable.length; i++) {
@@ -99,6 +100,7 @@ const Map = new Lang.Class({
node.value = value;
} else {
this._pool[hash] = { key: key, value: value };
+ this._size++;
}
},
@@ -108,6 +110,7 @@ const Map = new Lang.Class({
if (node && _sameValue(node.key, key)) {
delete this._pool[hash];
+ this._size--;
return [node.key, node.value];
} else {
return [null, null];
@@ -136,6 +139,6 @@ const Map = new Lang.Class({
},
size: function() {
- return Object.getOwnPropertyNames(this._pool).length;
+ return this._size;
},
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]