How can I calculate how many hashes I generate per second?
I have a function which generates hashes from a string:
string GenerateHash(string plainText);
I generate as many hashes as possible with 4 threads.
How do I calculate how many hashes (or megahashes) I generate per second?
Your problem breaks down nicely into 3 separate tasks
- Sharing a single count variable across threads
- Benchmarking thread completion time
- Calculating hashes per/second
Sharing a single count variable across threads
public static class GlobalCounter
{ public static int Value { get;
private set;
} public static void Increment()
{ Value =GetNextValue(Value);
} private static int GetNextValue(int curValue) { returnInterlocked.Increment(ref curValue);
} public static void Reset() { Value = 0; } }
Before you spin off the threads call GlobalCounter.Reset
and then in each thread (after each successful hash) you would call GlobalCounter.Increment
– using Interlocked.X
performs atomic operations of Value
in a thread-safe manner, it’s also much faster than lock
.
Benchmarking thread completion time
var sw = Stopwatch.StartNew(); Parallel.ForEach(someCollection, someValue =>
{ // generate hash GlobalCounter.Increment();
}); sw.Stop();
Parallel.ForEach
will block until all threads have finished
Calculating hashes per second
... sw.Stop(); var hashesPerSecond = GlobalCounter.Value / sw.Elapsed.Seconds;
Did you find this article helpful?
If so, please consider a donation to help the evolution and development of more helpful articles in the future, and show your support for alternative articles.
Your generosity is 💚 ly appreciated
You can donate in any crypto your 💚 desires 😊
Thank you all for your time !!!
✌ & 💚
Bitcoin (BTC) :
1P1tTNFGRZabK65RhqQxVmcMDHQeRX9dJJ
LiteCoin(LTC) :
LYAdiSpsTJ36EWCJ5HF9EGy9iWGCwoLhed
Ethereum(ETH) :
0x602e8Ca3984943cef57850BBD58b5D0A6677D856
EthereumClassic(ETC) :
0x602e8Ca3984943cef57850BBD58b5D0A6677D856
Cardano(ADA)
addr1q88c5cccnrqy6xesszzvf7rd4tcz87klt0m0h6uvltywqe8txwmsrrqdnpq27594tyn9vz59zv0n8367lvyc2atvrzvqlvdm9d
BinanceCoin(BNB)
bnb1wwfnkzs34knsrv2g026t458l0mwp5a3tykeylx
BitcoinCash (BCH)
1P1tTNFGRZabK65RhqQxVmcMDHQeRX9dJJ
BitcoinSV(BSV)
1P1tTNFGRZabK65RhqQxVmcMDHQeRX9dJJ
ZCash(ZEC)
t1fSSQX4gEhove9ngcvFafQaMPq5dtNNsNF
Dash(DASH)
XcWmbFw1VmxEPxvF9CWdjzKXwPyDTrbMwj
Shiba(SHIB)
0x602e8Ca3984943cef57850BBD58b5D0A6677D856
Tron(TRX)
TCsJJkqt9xk1QZWQ8HqZHnqexR15TEowk8
Stellar(XLM)
GBL4UKPHP2SXZ6Y3PRF3VRI5TLBL6XFUABZCZC7S7KWNSBKCIBGQ2Y54
Made with 💚 by Free Spirit
✌ & 💚
- CBDC’s Tyranny Is ComingHow & Why You should Prepare Here are just a few examples of what that sort of total control may look like: Government in total control The government could not only withhold money whenever they deemed … Continue reading CBDC’s Tyranny Is Coming
- 100 Based thingsHere is a list of 100 of the best based things: Trust is not based, and relying on trust is unbased. It is foolish to ever trust someone, because the only way to truly ensure that … Continue reading 100 Based things
- CypherPunk MovementTHE CYPHERPUNK MOVEMENT Let’s make a journey back in time to see where blockchain technology and cryptocurrencies came from. It will take us back to the CypherPunk Movement starting in the 1970’s. Cryptography for the People … Continue reading CypherPunk Movement
- Block 170 – First ever bitcoin transactionThe first ever bitcoin transaction from one person to another, on 2009-01-12 at 04:30 used Pay-to-Public-Key (P2PK), when Satoshi Nakamoto sent coins to Hal Finney in Block 170. P2PK is no longer used because it is … Continue reading Block 170 – First ever bitcoin transaction
- The Art of War QuotesThe Art of War (Chinese: 孫子兵法; lit. ‘Sun Tzu’s Military Method’, pinyin: Sūnzi bīngfǎ) is an ancient Chinese military treatise dating from the Late Spring and Autumn Period (roughly 5th century BC). The work, which is … Continue reading The Art of War Quotes