From 6818c6928a95af2cda225176ccc54bc6424e8103 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Thu, 17 Mar 2011 23:22:10 -0400 Subject: [PATCH] Improve max nonce auto-adjustment with some basic algebra. --- cpu-miner.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/cpu-miner.c b/cpu-miner.c index 7cd6e74..c7a6672 100644 --- a/cpu-miner.c +++ b/cpu-miner.c @@ -500,6 +500,7 @@ static void *miner_thread(void *userdata) struct work work __attribute__((aligned(128))); unsigned long hashes_done; struct timeval tv_start, tv_end, diff; + uint64_t max64; bool rc; /* obtain new work from internal workio thread */ @@ -576,14 +577,10 @@ static void *miner_thread(void *userdata) hashmeter(thr_id, &diff, hashes_done); /* adjust max_nonce to meet target scan time */ - if (diff.tv_sec > (opt_scantime * 2)) - max_nonce /= 2; /* large decrease */ - else if ((diff.tv_sec > opt_scantime) && - (max_nonce > 1500000)) - max_nonce -= 1000000; /* small decrease */ - else if ((diff.tv_sec < opt_scantime) && - (max_nonce < 0xffffec76)) - max_nonce += 100000; /* small increase */ + max64 = ((uint64_t)hashes_done * opt_scantime) / diff.tv_sec; + if (max64 > 0xfffffffaULL) + max64 = 0xfffffffaULL; + max_nonce = max64; /* if nonce found, submit work */ if (rc && !submit_work(mythr, &work))