Многопоточность и улучшенный код

Я просто пишу какую-то классическую программу взлома паролей, чтобы улучшить себя.

Я объяснил, как моя программа работает в начале кода. Посмотрите на некоторые из этих скриншотов, чтобы понять их проще.

Моя программа работает очень хорошо, но она немного грязная и может быть быстрее, если я решу эту проблему;

У меня две проблемы,

1-) Мой код выглядит таким длинным и грязным, потому что я скопировал блок кода 8 раз в операторе переключения регистра. Например, случай 1 зацикливается с паролями длиной один символ. регистр 2 = два символа, регистр 8 = пароль длиной 8 символов. Единственным отличием между этими случаями является количество «для цикла», случай 1 получил 1 для цикла, случай 8 получил 8 для циклов. Я хочу сделать мой код красивее, так как я могу избавиться от этой копии&вставьте код и сделайте его размером 1/8 от текущего размера. CTRL + MOUSE WHEEL DOWN, уменьшить масштаб и увидеть скопированные части.

2-) Сначала он пробует 1 цифру, затем 2 цифры, затем 3 цифры и так далее. Так что следует ждать 1,2,3, чтобы получить 4-значные. И это заставляет программу терять столько времени при старших цифрах. Мой процессор i7 3770k получил 6 ядер, программа работает только с одним, я думаю, потому что он говорит% 13 загрузки процессора. Я хочу сделать его выше, как 6 ядер в одной и той же задаче, ИЛИ каждое ядро ​​будет заботиться об одной части, как первое ядро ​​начнет зацикливаться только на 8 символов длины, а второе ядро ​​будет делать то же самое с 7 символами длины … и когда один из них найдет ответ, программа закончится. Можем ли мы действительно сделать это?

Код слишком длинный, как я уже сказал, поэтому я не помещаю его здесь,

Вот код:
http://pastebin.com/ZT373674/

Я надеюсь, что я объяснил хорошо, спасибо за помощь с этого момента!

0

Решение

Что касается 8-кратного дублированного кода, выделите дублированный код в функцию. Затем вызовите функцию из каждого случая. Передайте количество повторений цикла в функцию в качестве аргумента.

Что касается многопоточности, да, вы можете распределять потоки по нескольким потокам и делать это быстрее, но это сделает ваше кодирование намного более сложным и подверженным ошибкам. Если вы действительно хотите этим заниматься, было бы лучше найти хорошую книгу или поискать ответы на ранее задаваемые вопросы о написании многопоточного кода.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]