Advertisement
Guest User

Regex & LINQ: finding n-long words

a guest
Apr 22nd, 2011
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.76 KB | None | 0 0
  1.  
  2. using System;
  3. using System.Linq;
  4. using System.Diagnostics;
  5. using System.Text.RegularExpressions;
  6.  
  7. namespace RegexLinqStringParsing
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             string noLongWords = "abcd abcd ab xyz sample test";
  14.             string oneLongWordAtEnd = "xyz abc 88b zsy abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdea";
  15.             string oneLongWordAtBegining = "abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdea xyz abc 88b zsy";
  16.             string manyLongWordsEverywhere =
  17.                 @"abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdea
  18.                  abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdea abcd xyz
  19.                  abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdea yz
  20.                  abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdea";
  21.  
  22.             int iterations = 1000000;
  23.  
  24.             Linq(iterations, noLongWords, "noLongWords");
  25.             Linq(iterations, oneLongWordAtEnd, "oneLongWordAtEnd");
  26.             Linq(iterations, oneLongWordAtBegining, "oneLongWordAtBegining");
  27.             Linq(iterations, manyLongWordsEverywhere, "manyLongWordsEverywhere");
  28.  
  29.             Regex(iterations, noLongWords, "noLongWords");
  30.             Regex(iterations, oneLongWordAtEnd, "oneLongWordAtEnd");
  31.             Regex(iterations, oneLongWordAtBegining, "oneLongWordAtBegining");
  32.             Regex(iterations, manyLongWordsEverywhere, "manyLongWordsEverywhere");
  33.  
  34.             Console.WriteLine("DONE");
  35.             Console.ReadLine();
  36.         }
  37.  
  38.         private static void Linq(int iterations, string input, string inputName)
  39.         {
  40.             bool isLong = false;
  41.             Stopwatch watch = new Stopwatch();
  42.             watch.Start();
  43.             for (int i = 0; i < iterations; i++)
  44.             {
  45.                 isLong = input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
  46.                                          .Any(s => s.Length > 50);
  47.             }
  48.  
  49.             watch.Stop();
  50.             Console.WriteLine("LINQ [{0}], {1} iterations. Result = {2}: {3} ms",
  51.                 inputName, iterations, isLong, watch.ElapsedMilliseconds);
  52.         }
  53.  
  54.         private static void Regex(int iterations, string input, string inputName)
  55.         {
  56.             bool isLong = false;
  57.             Regex regex = new Regex(@"(\w){50,}");
  58.             Stopwatch watch = new Stopwatch();
  59.             watch.Start();
  60.             for (int i = 0; i < iterations; i++)
  61.             {
  62.                 isLong = regex.IsMatch(input);
  63.             }
  64.  
  65.             watch.Stop();
  66.             Console.WriteLine("Regex [{0}], {1} iterations. Result = {2}: {3} ms",
  67.                 inputName, iterations, isLong, watch.ElapsedMilliseconds);            
  68.         }
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement