使用C#

时间:2018-11-19 03:51:09

标签: c# performance cryptography cpu

我正在尝试用C#重写Vanitygen。这是我现在的代码

 private void btnGenerate_Click(object sender, EventArgs e) {

            KeyPair kp = KeyPair.Create(ExtraEntropy.GetEntropy()); //Generate private key
            string wifprivatekey = new KeyPair(kp.PrivateKeyBytes).PrivateKeyBase58; //Create wif private key
            string address = new AddressBase(kp, AddressTypeByte).AddressBase58);// Create base 58 address

                if (address.StartsWith(pattern)) //compare value with input pattern
                {
                    using (var writer = File.AppendText(@"C:\Users\ran242\Desktop\result.txt"))
                    {
                        writer.WriteLine("Pattern: "+pattern);
                        writer.WriteLine("Address: "+address);
                        writer.WriteLine("Privatekey: "+wifprivatekey);
                    }
                }  
    }

我使用Parallel.For测试了它的运行时间。该代码现在真的运行很慢,所以我打算提高性能。并行运行时,它只能检查1000个地址大约3秒钟,甚至没有用完所有CPU能力

 System.Threading.Tasks.Parallel.For(0, 1000, i =>
        {
           KeyPair kp = KeyPair.Create(ExtraEntropy.GetEntropy()); //Generate private key
        string wifprivatekey = new KeyPair(kp.PrivateKeyBytes).PrivateKeyBase58; //Create wif private key
        string address = new AddressBase(kp, AddressTypeByte).AddressBase58);// Create base 58 address

            if (address.StartsWith(pattern)) //compare value with input pattern
            {
                using (var writer = File.AppendText(@"C:\Users\ran242\Desktop\result.txt"))
                {
                    writer.WriteLine("Pattern: "+pattern);
                    writer.WriteLine("Address: "+address);
                    writer.WriteLine("Privatekey: "+wifprivatekey);
                }
            }  
        });

enter image description here

是否有什么方法可以改进代码并在其他计算机上运行此代码时使用100%的CPU或任何CPU?谢谢

1 个答案:

答案 0 :(得分:1)

您要做什么接近realtime progtramming。那不是您可以随心所欲地做或学到的东西。

实时编程是一个高度专业化的编程领域,具有专门的操作系统。根本不适合使用C#和.NET。 JiT编译的垃圾收集运行时不是用于实时编程的正确环境。那就是为什么原始程序是用C语言编写的。

据我所知,您正在尝试以超出技能水平的方式进行编程。您需要首先学习多任务处理,然后才能进行射击。然后,您需要知道此问题甚至是Pleasingly Paralelizeable还是何时发生Paralell Slowdown。在您的计算机上,请注意。诸如Swapfile之类的东西很容易妨碍这种性能。