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
โ & ๐
- Running bitcoin – Hal FinneyJoin Honorary Chair Fran Finney and the Running Bitcoin Challenge Committee as we honor legendary cypher punk, Hal Finney. This is THE EVENT that combines Hal Finney’s love of running and Bitcoin and is raising funds … Continue reading Running bitcoin – Hal Finney
- 4th Year WordPress AnniversaryIt’s been 4 years already and it seems I haven’t done nothing at all… With the little time I could spare to work on this blog, I hope I bought a tiny seed of knowledge into … Continue reading 4th Year WordPress Anniversary
- Happy Genesis Block DayJanuary 3rd 2023 – Bitcoin 14th Anniversary Happy Genesis Block Day! January 3 is the 14th anniversary of Bitcoinโs Block Zero, its anchor in time. The first sentence of the email has become iconic among the … Continue reading Happy Genesis Block Day
- Happy New Year 2023
- Computer Dude Inc.So – You want to be a Computer Dude? The word / expression “Dude” is not a reference to being male, female, or whatever, it is a designation of “Skill Level.” When we go surfing – … Continue reading Computer Dude Inc.