Merge pull request #6080 from Vurich/ethash

Unroll loops in light_compute
This commit is contained in:
Robert Habermeier
2017-07-24 13:09:31 +02:00
committed by GitHub
4 changed files with 105 additions and 18 deletions

View File

@@ -16,10 +16,15 @@
//! Ethash implementation
//! See https://github.com/ethereum/wiki/wiki/Ethash
#![cfg_attr(feature = "benches", feature(test))]
extern crate primal;
extern crate sha3;
extern crate parking_lot;
#[macro_use]
extern crate crunchy;
#[macro_use]
extern crate log;
mod compute;
@@ -128,3 +133,27 @@ fn test_lru() {
assert_eq!(ethash.cache.lock().recent_epoch.unwrap(), 2);
assert_eq!(ethash.cache.lock().prev_epoch.unwrap(), 0);
}
#[cfg(feature = "benches")]
mod benchmarks {
extern crate test;
use compute::{Light, light_compute, SeedHashCompute};
use self::test::Bencher;
#[bench]
fn bench_light_compute(b: &mut Bencher) {
let hash = [0xf5, 0x7e, 0x6f, 0x3a, 0xcf, 0xc0, 0xdd, 0x4b, 0x5b, 0xf2, 0xbe, 0xe4, 0x0a, 0xb3, 0x35, 0x8a, 0xa6, 0x87, 0x73, 0xa8, 0xd0, 0x9f, 0x5e, 0x59, 0x5e, 0xab, 0x55, 0x94, 0x05, 0x52, 0x7d, 0x72];
let nonce = 0xd7b3ac70a301a249;
let light = Light::new(486382);
b.iter(|| light_compute(&light, &hash, nonce));
}
#[bench]
fn bench_seedhash(b: &mut Bencher) {
let seed_compute = SeedHashCompute::new();
b.iter(|| seed_compute.get_seedhash(486382));
}
}