Используйте все 100% мощности процессора с C # - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь переписать Vanitygen в C #.Это мой код на данный момент

 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 секунд и даже не использует всю мощность процессора

 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

IsЕсть ли способ, которым я могу улучшить код и использовать 100% моего ЦП или любого ЦП всякий раз, когда я запускаю этот код на другом компьютере?спасибо

1 Ответ

0 голосов
/ 19 ноября 2018

То, что вы пытаетесь сделать, близко к программированию в реальном времени .Это не то, что вы можете просто делать или изучать по прихоти.

Программирование в реальном времени - это узкоспециализированная область программирования со специализированными операционными системами .Один для которого C # и .NET довольно непригодны для начала.JiT-скомпилированная среда исполнения Garbage Collected не является подходящей средой для программирования в реальном времени.Именно поэтому почему оригинальная программа была написана на языке C.

Насколько я могу судить, вы пытаетесь программировать намного выше своего уровня квалификации.Вам нужно сначала изучить многозадачность, прежде чем вы сможете в ней разобраться.Тогда вам нужно знать, является ли эта проблема даже приятной парализуемостью или когда она страдает замедление Параллеля .Обратите внимание на ваш компьютер.Такие вещи, как Swapfile, могут легко помешать такой работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...