我目前正在尝试创建一个用 C# XNA 编写的比特币矿工。
https://github.com/Generalkidd/XNAMiner
现在的问题是,Miner 的实际数字运算似乎占用了过多的 CPU 时间,因此,程序的 UI 在启动时几乎冻结,尽管我相信尽管有窗口,但计算仍在后台进行被冻结和反应迟钝。我尝试实现 Aphid 的 ParallelTasks 库并将一些 for 循环迁移到不同的线程中。我不完全理解这些并行 for 循环是如何工作的,因此我创建的版本没有正确迭代,但是,程序确实加快了很多。还剩下几个 for 循环和一堆 foreach 循环。
优化我的代码最简单、最有效的方法是什么?我应该尝试将每个循环移动到自己的线程中吗?或者尝试将整个方法移动到它们自己的线程中?或者是否可以使用 GPU 进行这些计算(考虑到 CPU 挖掘的状态,这种方式最终会更好)。