【问题标题】:Multi-threading and making code prettier多线程并使代码更漂亮
【发布时间】:2014-03-17 21:30:41
【问题描述】:

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

我已经在代码开头解释了我的程序是如何工作的。检查其中一些屏幕截图以更容易理解。

我的程序运行良好,但有点脏,如果我解决了这个问题,它会更快;

我有两个问题,

1-) 我的代码看起来又长又脏,因为我在 switch case 语句中复制了 8 次代码块。例如 case 1 循环使用一个字符长度的密码。 case 2 = 两个字符,case 8 = 8 个字符长度的密码。这些案例之间唯一的区别是“for 循环”计数,案例 1 有 1 个 for 循环,案例 8 有 8 个嵌套的 for 循环。我想让我的代码更漂亮,那么我怎样才能摆脱这个复制和粘贴代码并使其成为当前大小的 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/

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

【问题讨论】:

  • 我认为这可能更适合Code Review Stack Exchange
  • 好的,我试试,我不知道有这样的东西。我真的不明白为什么人们会无缘无故地投票给我?我问了一个问题,人们只是为了好玩而投反对票,这并不酷,我是新来的。
  • 因为您的问题非常广泛,而且 Stack Overflow 的格式也很差。您通过外部站点进行大量代码转储并在此处粘贴指向它的链接。 SO 是通过发布详细的问题示例来解决您遇到的问题。不要发布一个巨大的转储并说“请修复它”。此外,downvoting 对于修剪创建不佳的问题是必要的。 SO 不是一个拥抱盒。
  • 好吧,那么对不起。但这就是重点,代码并没有那么长,它很长,因为它是 x8 复制版本。我不知道如何解决它并来这里问。无论如何,谢谢。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-08-24
    • 2023-02-19
    • 1970-01-01
    • 2020-11-21
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多