mempool: move memUsage method.
This commit is contained in:
parent
08e56791a0
commit
d92d6487b5
@ -1709,7 +1709,7 @@ Mempool.prototype.trackEntry = function trackEntry(entry, view) {
|
|||||||
this.indexEntry(entry, view);
|
this.indexEntry(entry, view);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.size += this.memUsage(tx);
|
this.size += entry.memUsage();
|
||||||
this.totalTX++;
|
this.totalTX++;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1738,7 +1738,7 @@ Mempool.prototype.untrackEntry = function untrackEntry(entry) {
|
|||||||
if (this.options.indexAddress)
|
if (this.options.indexAddress)
|
||||||
this.unindexEntry(entry);
|
this.unindexEntry(entry);
|
||||||
|
|
||||||
this.size -= this.memUsage(tx);
|
this.size -= entry.memUsage();
|
||||||
this.totalTX--;
|
this.totalTX--;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1840,76 +1840,6 @@ Mempool.prototype.removeDoubleSpends = function removeDoubleSpends(tx) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculate the memory usage of a transaction.
|
|
||||||
* Note that this only calculates the JS heap
|
|
||||||
* size. Sizes of buffers are ignored (the v8
|
|
||||||
* heap is what we care most about). All numbers
|
|
||||||
* are based on the output of v8 heap snapshots
|
|
||||||
* of TX objects.
|
|
||||||
* @param {TX} tx
|
|
||||||
* @returns {Number} Usage in bytes.
|
|
||||||
*/
|
|
||||||
|
|
||||||
Mempool.prototype.memUsage = function memUsage(tx) {
|
|
||||||
var mem = 0;
|
|
||||||
var i, j, input, output, op;
|
|
||||||
|
|
||||||
mem += 208; // tx
|
|
||||||
mem += 80; // _hash
|
|
||||||
mem += 88; // _hhash
|
|
||||||
mem += 80; // _raw
|
|
||||||
mem += 80; // _whash
|
|
||||||
mem += 48; // mutable
|
|
||||||
|
|
||||||
mem += 32; // input array
|
|
||||||
|
|
||||||
for (i = 0; i < tx.inputs.length; i++) {
|
|
||||||
input = tx.inputs[i];
|
|
||||||
|
|
||||||
mem += 120; // input
|
|
||||||
mem += 104; // prevout
|
|
||||||
mem += 88; // prevout hash
|
|
||||||
|
|
||||||
mem += 40; // script
|
|
||||||
mem += 80; // script raw buffer
|
|
||||||
mem += 32; // script code array
|
|
||||||
mem += input.script.code.length * 40; // opcodes
|
|
||||||
|
|
||||||
for (j = 0; j < input.script.code.length; j++) {
|
|
||||||
op = input.script.code[j];
|
|
||||||
if (op.data)
|
|
||||||
mem += 80; // op buffers
|
|
||||||
}
|
|
||||||
|
|
||||||
mem += 96; // witness
|
|
||||||
mem += 32; // witness items
|
|
||||||
mem += input.witness.items.length * 80; // witness buffers
|
|
||||||
}
|
|
||||||
|
|
||||||
mem += 32; // output array
|
|
||||||
|
|
||||||
for (i = 0; i < tx.outputs.length; i++) {
|
|
||||||
output = tx.outputs[i];
|
|
||||||
|
|
||||||
mem += 104; // output
|
|
||||||
mem += 40; // script
|
|
||||||
mem += 80; // script raw buffer
|
|
||||||
mem += 32; // script code array
|
|
||||||
mem += output.script.code.length * 40; // opcodes
|
|
||||||
|
|
||||||
for (j = 0; j < output.script.code.length; j++) {
|
|
||||||
op = output.script.code[j];
|
|
||||||
if (op.data)
|
|
||||||
mem += 80; // op buffers
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mem += 176; // mempool entry
|
|
||||||
|
|
||||||
return mem;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the memory usage of the entire mempool.
|
* Calculate the memory usage of the entire mempool.
|
||||||
* @see DynamicMemoryUsage()
|
* @see DynamicMemoryUsage()
|
||||||
|
|||||||
@ -176,6 +176,77 @@ MempoolEntry.prototype.getDescRate = function getDescRate() {
|
|||||||
return policy.getRate(this.descSize, this.descFee);
|
return policy.getRate(this.descSize, this.descFee);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the memory usage of a transaction.
|
||||||
|
* Note that this only calculates the JS heap
|
||||||
|
* size. Sizes of buffers are ignored (the v8
|
||||||
|
* heap is what we care most about). All numbers
|
||||||
|
* are based on the output of v8 heap snapshots
|
||||||
|
* of TX objects.
|
||||||
|
* @returns {Number} Usage in bytes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
MempoolEntry.prototype.memUsage = function memUsage() {
|
||||||
|
var tx = this.tx;
|
||||||
|
var total = 0;
|
||||||
|
var i, j, input, output, op;
|
||||||
|
|
||||||
|
total += 176; // mempool entry
|
||||||
|
total += 48; // dependencies
|
||||||
|
|
||||||
|
total += 208; // tx
|
||||||
|
total += 80; // _hash
|
||||||
|
total += 88; // _hhash
|
||||||
|
total += 80; // _raw
|
||||||
|
total += 80; // _whash
|
||||||
|
total += 48; // mutable
|
||||||
|
|
||||||
|
total += 32; // input array
|
||||||
|
|
||||||
|
for (i = 0; i < tx.inputs.length; i++) {
|
||||||
|
input = tx.inputs[i];
|
||||||
|
|
||||||
|
total += 120; // input
|
||||||
|
total += 104; // prevout
|
||||||
|
total += 88; // prevout hash
|
||||||
|
|
||||||
|
total += 40; // script
|
||||||
|
total += 80; // script raw buffer
|
||||||
|
total += 32; // script code array
|
||||||
|
total += input.script.code.length * 40; // opcodes
|
||||||
|
|
||||||
|
for (j = 0; j < input.script.code.length; j++) {
|
||||||
|
op = input.script.code[j];
|
||||||
|
if (op.data)
|
||||||
|
total += 80; // op buffers
|
||||||
|
}
|
||||||
|
|
||||||
|
total += 96; // witness
|
||||||
|
total += 32; // witness items
|
||||||
|
total += input.witness.items.length * 80; // witness buffers
|
||||||
|
}
|
||||||
|
|
||||||
|
total += 32; // output array
|
||||||
|
|
||||||
|
for (i = 0; i < tx.outputs.length; i++) {
|
||||||
|
output = tx.outputs[i];
|
||||||
|
|
||||||
|
total += 104; // output
|
||||||
|
total += 40; // script
|
||||||
|
total += 80; // script raw buffer
|
||||||
|
total += 32; // script code array
|
||||||
|
total += output.script.code.length * 40; // opcodes
|
||||||
|
|
||||||
|
for (j = 0; j < output.script.code.length; j++) {
|
||||||
|
op = output.script.code[j];
|
||||||
|
if (op.data)
|
||||||
|
total += 80; // op buffers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test whether the entry is free with
|
* Test whether the entry is free with
|
||||||
* the current priority (calculated by
|
* the current priority (calculated by
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user