C#如何更快地运行应用程序

Sadfiesch

我正在创建一个可能的大写字母的单词列表,以证明此代码不安全的8位数字密码会将aaaaaaaa写入aaaaaaab到aaaaaaac等,直到zzzzzzzz使用以下代码为止:

class Program
{
    static string path;
    static int file = 0;
    static void Main(string[] args)
    {
        new_file();
        var alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789+-*_!$£^=<>§°ÖÄÜöäü.;:,?{}[]";
        var q = alphabet.Select(x => x.ToString());
        int size = 3;
        int counter = 0;

        for (int i = 0; i < size - 1; i++)
        {
            q = q.SelectMany(x => alphabet, (x, y) => x + y);
        }
        foreach (var item in q)
        {
            if (counter >= 20000000)
            {
                new_file();
                counter = 0;
            }
            if (File.Exists(path))
            {
                using (StreamWriter sw = File.AppendText(path))
                {
                    sw.WriteLine(item);
                    Console.WriteLine(item);
                    /*if (!(Regex.IsMatch(item, @"(.)\1")))
                    {
                        sw.WriteLine(item);
                        counter++;
                    }
                    else
                    {
                        Console.WriteLine(item);
                    }*/
                }
            }
            else
            {
                new_file();
            }
        }
    }

    static void new_file()
    {
        path = @"C:\" + "list" + file + ".txt";
        if (!File.Exists(path))
        {
            using (StreamWriter sw = File.CreateText(path))
            {
            }
        }
        file++;
    }
}

该代码运行良好,但需要数周的时间才能运行。有谁知道加快速度的方法,还是我必须等待?如果有人有主意请告诉我。

Serge-Tm

表现:

size 3:   0.02s
size 4:   1.61s
size 5: 144.76s

提示:

  • 删除了LINQ以进行组合生成
  • 删除每个密码的Console.WriteLine
  • 删除了StreamWriter
  • 大缓冲区(128k),用于文件写入

  const string alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789+-*_!$£^=<>§°ÖÄÜöäü.;:,?{}[]";
  var byteAlphabet = alphabet.Select(ch => (byte)ch).ToArray();
  var alphabetLength = alphabet.Length;

  var newLine = new[] { (byte)'\r', (byte)'\n' };

  const int size = 4;
  var number = new byte[size];
  var password = Enumerable.Range(0, size).Select(i => byteAlphabet[0]).Concat(newLine).ToArray();

  var watcher = new System.Diagnostics.Stopwatch();
  watcher.Start();

  var isRunning = true;
  for (var counter = 0; isRunning; counter++)
  {
    Console.Write("{0}: ", counter);
    Console.Write(password.Select(b => (char)b).ToArray());
    using (var file = System.IO.File.Create(string.Format(@"list.{0:D5}.txt", counter), 2 << 16))
    {
      for (var i = 0; i < 2000000; ++i)
      {
        file.Write(password, 0, password.Length);
        var j = size - 1;
        for (; j >= 0; j--)
        {
          if (number[j] < alphabetLength - 1)
          {
            password[j] = byteAlphabet[++number[j]];
            break;
          }
          else
          {
            number[j] = 0;
            password[j] = byteAlphabet[0];
          }
        }
        if (j < 0)
        {
          isRunning = false;
          break;
        }
      }
    }
  }
  watcher.Stop();
  Console.WriteLine(watcher.Elapsed);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#如何更快地运行应用程序

来自分类Dev

使用 Run Query at Start 更快地运行应用程序

来自分类Dev

如何使我的应用程序运行更快

来自分类Dev

时钟速度较慢的新处理器能否更快地运行旧版应用程序?

来自分类Dev

如何要求Apple Review团队比平常更快地审核应用程序?

来自分类Dev

如何在gridView中更快地加载应用程序的图像(图标)?

来自分类Dev

如何使Windows Phone应用程序像默认应用程序一样更快地加载?

来自分类Dev

如何使Windows Phone应用程序像默认应用程序一样更快地加载?

来自分类Dev

UWP应用程序可以更快地加载图像吗?

来自分类Dev

更快地测试 node.js 应用程序?

来自分类Dev

首次执行后如何更快地运行linux程序

来自分类Dev

C#如何使应用程序即使在删除应用程序文件后仍继续运行

来自分类Dev

如何从C#中的控制台应用程序运行Web应用程序

来自分类Dev

如何在C#中更快地插入查询?

来自分类Dev

如何从C#系统托盘应用程序中将C程序作为线程运行?

来自分类Dev

如何在Windows OS运行时使我的WPF应用程序运行C#

来自分类Dev

通用Windows平台(UWP)C#应用程序-如何在应用程序中运行独立的python

来自分类Dev

是否可以预加载JVM,以更快地启动少量的Java应用程序?

来自分类Dev

C#任务无法更快地工作

来自分类Dev

如何在C#中通过CMD进程运行的应用程序中输入输入?

来自分类Dev

使用C#,如何清除正在运行的应用程序缓存以采用时区更改?

来自分类Dev

如何通过命令提示符运行c#应用程序?

来自分类Dev

如何在C#中删除正在运行的应用程序?

来自分类Dev

使用C#,如何清除正在运行的应用程序缓存以采用时区更改?

来自分类Dev

如何暂停 C# 控制台应用程序(仅当由用户运行时)

来自分类Dev

如何从 C# 运行交互式 RPG 应用程序?

来自分类Dev

通过 BAT 文件运行应用程序时,如何更新 C# 类中的参数?

来自分类Dev

如何使 c# windows 窗体应用程序仅在一台 PC 上运行?

来自分类Dev

如何在后台运行 c# 控制台应用程序 .exe?

Related 相关文章

  1. 1

    C#如何更快地运行应用程序

  2. 2

    使用 Run Query at Start 更快地运行应用程序

  3. 3

    如何使我的应用程序运行更快

  4. 4

    时钟速度较慢的新处理器能否更快地运行旧版应用程序?

  5. 5

    如何要求Apple Review团队比平常更快地审核应用程序?

  6. 6

    如何在gridView中更快地加载应用程序的图像(图标)?

  7. 7

    如何使Windows Phone应用程序像默认应用程序一样更快地加载?

  8. 8

    如何使Windows Phone应用程序像默认应用程序一样更快地加载?

  9. 9

    UWP应用程序可以更快地加载图像吗?

  10. 10

    更快地测试 node.js 应用程序?

  11. 11

    首次执行后如何更快地运行linux程序

  12. 12

    C#如何使应用程序即使在删除应用程序文件后仍继续运行

  13. 13

    如何从C#中的控制台应用程序运行Web应用程序

  14. 14

    如何在C#中更快地插入查询?

  15. 15

    如何从C#系统托盘应用程序中将C程序作为线程运行?

  16. 16

    如何在Windows OS运行时使我的WPF应用程序运行C#

  17. 17

    通用Windows平台(UWP)C#应用程序-如何在应用程序中运行独立的python

  18. 18

    是否可以预加载JVM,以更快地启动少量的Java应用程序?

  19. 19

    C#任务无法更快地工作

  20. 20

    如何在C#中通过CMD进程运行的应用程序中输入输入?

  21. 21

    使用C#,如何清除正在运行的应用程序缓存以采用时区更改?

  22. 22

    如何通过命令提示符运行c#应用程序?

  23. 23

    如何在C#中删除正在运行的应用程序?

  24. 24

    使用C#,如何清除正在运行的应用程序缓存以采用时区更改?

  25. 25

    如何暂停 C# 控制台应用程序(仅当由用户运行时)

  26. 26

    如何从 C# 运行交互式 RPG 应用程序?

  27. 27

    通过 BAT 文件运行应用程序时,如何更新 C# 类中的参数?

  28. 28

    如何使 c# windows 窗体应用程序仅在一台 PC 上运行?

  29. 29

    如何在后台运行 c# 控制台应用程序 .exe?

热门标签

归档