This commit is contained in:
Christopher Jeffrey 2016-04-06 14:21:57 -07:00
parent c97c51eae0
commit 5830cc044b
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
3 changed files with 3 additions and 127 deletions

View File

@ -17,6 +17,7 @@ fullnode. Bcoin runs in node.js, but it can also be browserified.
- Fast UTXO retrieval by address for wallets (10000 utxos from 10000 different
addresses in ~700ms, 50000+ utxos from 10-100 addresses in ~400ms)
- Segregated witness support for block/tx validation and wallets.
- Versionbits suport.
## Install

View File

@ -623,126 +623,3 @@ function clone(node) {
*/
module.exports = BST;
if (module.parent)
return;
var tree = new BST();
function bench(tree, name) {
var start = Date.now();
var istart = Date.now();
for (var i = 0; i < 100000; i++) {
tree.insert('foo ' + i, 'bar ' + i);
}
console.log('%s insert: %d', name, Date.now() - istart);
var sstart = Date.now();
for (var i = 0; i < 100000; i++) {
tree.search('foo ' + i);
}
console.log('%s search: %d', name, Date.now() - sstart);
var rstart = Date.now();
for (var i = 0; i < 100000; i++) {
if (i > 50000)
tree.remove('foo ' + i);
}
console.log('%s remove: %d', name, Date.now() - rstart);
var itstart = Date.now();
tree.range('foo 700', 'foo 80000');
console.log('%s iter: %d', name, Date.now() - itstart);
console.log('%s total: %d', name, Date.now() - start);
}
bench(tree, 'tree');
var tree = new BST();
for (var i = 0; i < 1000; i++) {
tree.insert('foo ' + i, 'bar ' + i);
}
for (var i = 0; i < 1000; i++) {
assert(tree.search('foo ' + i).toString('utf8') === 'bar ' + i);
if (i > 900)
tree.remove('foo ' + i);
}
for (var i = 0; i < 1000; i++) {
if (i > 900)
assert(tree.search('foo ' + i) == null);
else
assert(tree.search('foo ' + i).toString('utf8') === 'bar ' + i);
}
var items = tree.range('foo 700', 'foo 800');
//utils.print(items);
tree.open(function() {
var batch = tree.batch();
for (var i = 0; i < 1000; i++) {
var key = 'foo ' + i;
var val = new Buffer('bar ' + i, 'ascii');
batch.put(key, val);
}
batch.write(function(err) {
if (err)
throw err;
var batch = tree.batch();
for (var i = 0; i < 1000; i++) {
var key = 'foo ' + i;
var val = new Buffer('bar ' + i, 'ascii');
if (i > 950)
batch.del(key);
else
batch.put(key, val);
}
batch.write(function(err) {
if (err)
throw err;
utils.forRangeSerial(0, 1000, function(i, next) {
var key = 'foo ' + i;
var val = new Buffer('bar ' + i, 'ascii');
tree.get(key, function(err, value) {
if (i > 950) {
assert(err);
assert(err.type === 'NotFoundError');
return next();
}
if (err)
return next(err);
assert(utils.isEqual(value, val));
next();
});
}, function(err) {
if (err)
throw err;
var iter = tree.iterator({
gte: 'foo 900',
lte: 'foo 999',
keyAsBuffer: false,
fillCache: false
});
(function next() {
iter.next(function(err, key, value) {
if (err) {
return iter.end(function(e) {
throw err;
});
}
if (key === undefined) {
return iter.end(function(e) {
if (e)
throw e;
utils.print(tree.dump());
tree.approximateSize(null, null, function(err, size) {
utils.print(size);
return console.log('done');
});
});
}
console.log(key + ' : ' + value);
next();
});
})();
});
});
});
});

View File

@ -255,8 +255,6 @@ Peer.prototype.broadcast = function broadcast(items) {
packetType = 'block';
else if (type === constants.inv.tx)
packetType = 'tx';
else if (type === constants.inv.filteredblock)
packetType = 'merkleblock';
else
assert(false, 'Bad type.');
@ -1069,8 +1067,8 @@ Peer.prototype._handleGetData = function handleGetData(items) {
utils.debug(
'Served %d items to %s with getdata (notfound=%d).',
items.length - notfound.length,
notfound.length,
self.host);
self.host,
notfound.length);
if (notfound.length > 0)
self._write(self.framer.notFound(notfound));