多线程和使代码更漂亮

时间:2014-03-17 21:30:41

标签: c++ multithreading for-loop switch-statement copy-paste

我只是编写了一些经典的强力密码破解程序,只是为了提高自己。

我已经解释了我的程序在代码开始时的工作原理。检查其中的一些截图,以便更容易理解。

我的程序工作得很好但是有点脏,如果我解决这个问题会更快;

我有两个问题,

1-)我的代码看起来很长很脏,因为我在switch case语句中复制了8次代码块。例如,情况1循环具有一个字符长度的密码。案例2 =两个字符,案例8 = 8个字符长度密码。这些情况之间唯一的区别是“for循环”计数,情况1得到1循环,情况8得到8嵌套循环。我想让我的代码更漂亮,那么我怎么能摆脱这个副本和粘贴代码并使其成为当前大小的1/8大小。按住CTRL + MOUSE WHEEL DOWN,缩小并查看复制粘贴的部分。

2-)它首先尝试1位数,然后是2位数,然后是3位数,依此类推。所以它应该等待1,2,3才能获得4位数。它会使程序在更高的位数上失去这么多时间。我的CPU i7 3770k有6个内核,程序运行只有一个我猜,因为它说%13 CPU使用率。我希望在相同的任务中使它更高,就像6个核心一样,或者每个核心将处理一个部分,如第一个核心将开始循环只有8个字符长度的核心,第二个核心将使用7个字符长度的核心... ...当其中一个人找到答案时,程序将结束。我们真的能做到吗?

我说的代码太长了,所以我不把它放在这里,

这是代码: http://pastebin.com/ZT373674/

我希望我解释得很好,谢谢你们从现在开始的帮助!

1 个答案:

答案 0 :(得分:0)

关于8次重复代码,将重复代码分解为函数。然后,从每个案例中调用该函数。将循环的重复次数作为参数传递给函数。

关于多线程,是的,您可以调度到多个线程并使其更快,但这会使您的编码更加复杂并且容易出错。如果你真的想要追求它,最好找一本好书,或者在编写多线程代码时搜索以前回答的问题。