Загрузка...

Speed ​​up C # regular expressions

Thread in C# created by RaysMorgan Oct 22, 2016. 647 views

  1. RaysMorgan
    RaysMorgan Topic starter Oct 22, 2016 Че скажете 53,985 Mar 7, 2013
    Часто мы работаем с регулярками, например парсим все ссылки с html документа или нужные слова из файла.
    Когда размер документа или файла незначителен, то нас всё устраивает и мы пользуемся ими дальше.
    Но как только мы начинаем работать с файлами, весом больше гигабайта, жалуемся на скорость регулярных выражений.

    Давайте попробуем немного ускорить regular expression

    Обычно, мы создаем регулярное выражение таким образом: (например, для поиска всех логинов из массива source)

    csharp

    public Regex myRegex;

    public void myFunc() {
    myRegex = new Regex(@"[a-zA-Z0-9-_.]{6,25}");
    List<string> Output = new List<string>(1000*1000);
    for (int i =0; i < countLines; i++) {
    if (myRegex.Match(source).Success) {
    Output.Add(source);
    }
    }
    }

    Попробуем создать регулярное выражение сразу и зададим опции:
    csharp

    static Regex myRegex = new Regex(@"[a-zA-Z0-9-_.]{6,25}", RegexOptions.Compiled);
    public void myFunc() {
    List<string> Output = new List<string>(1000*1000);
    for (int i =0; i < countLines; i++) {
    if (myRegex.Match(source).Success) {
    Output.Add(source);
    }
    }
    }

    Таким образом, прирост скорости будет примерно в 1.2 раза.
    Источник
     
  2. AnyBoom
    AnyBoom Oct 23, 2016 0 Aug 13, 2016
    Вау, в 0.2 быстрее.
    Лучше уж вообще отказаться от них
     
  3. RaysMorgan
    RaysMorgan Topic starter Oct 24, 2016 Че скажете 53,985 Mar 7, 2013
    AnyBoom, есть такие задачи, где это необходимо
     
  4. Limbo49005
    Limbo49005 Oct 24, 2016 ♛๑۩۩๑ VIP ๑۩۩๑♛ 3275 Sep 5, 2016
    Нихуя не понимаю, но нига вроде шарит, респект !
     
  5. iPro_inactive
    iPro_inactive Oct 25, 2016 Banned 30 Jun 15, 2016
    Есть, но это точно не Html D:
     
  6. micro_inactive
    Если html документ, то регулярки отпихнем в сторону. Зачем есть HtmlAgilityPack?
     
Loading...
Top