区块链演示:在mine函数中添加挖矿时间记录
在blockchain-demo项目中,为了记录每次挖矿所消耗的时间,需要在mine函数中添加以下代码,将其放在for循环中的第一行:
var start = new Date().getTime(); // 记录开始时间
for (var x = 0; x <= maximumNonce; x++) {
$('#block' + block + 'chain' + chain + 'nonce').val(x);
$('#block' + block + 'chain' + chain + 'hash').val(sha256(block, chain));
if ($('#block' + block + 'chain' + chain + 'hash').val().substr(-difficulty, difficulty) === pattern) {
if (isChain) {
updateChain(block, chain);
} else {
updateState(block, chain);
}
break;
}
}
var end = new Date().getTime(); // 记录结束时间
console.log('Time taken to mine block ' + block + ' in chain ' + chain + ': ' + (end - start) + 'ms'); // 输出消耗时间
注意: 以上代码应该替换掉原来的mine函数中的for循环部分。
最后,在控制台中输出同一难度下的16次挖矿所消耗的时间,并计算其平均值的代码应该放在控制台中执行,而不是放在blockchain-demo.js文件中。
以下是用于在控制台中输出时间的代码示例:
var times = [];
for (var i = 1; i <= 16; i++) {
mine(i, 1, true);
times.push(end - start);
}
console.log('Times taken to mine 16 blocks in chain 1: ' + times);
var sum = times.reduce((a, b) => a + b, 0);
var avg = sum / times.length;
console.log('Average time taken to mine a block in chain 1: ' + avg + 'ms');
通过以上步骤,你就可以在blockchain-demo项目中记录每次挖矿所消耗的时间,并分析其平均值。
原文地址: https://www.cveoy.top/t/topic/f2w7 著作权归作者所有。请勿转载和采集!