Skip to content

Instantly share code, notes, and snippets.

@yallie
Last active December 14, 2015 02:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yallie/5011774 to your computer and use it in GitHub Desktop.
Save yallie/5011774 to your computer and use it in GitHub Desktop.
HashSet<char> benchmark, version #2
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
struct Program
{
static void Main()
{
const int iterations = 100000;
string smallString = "<>*";
string largeString = "@<>d+-0123456789abcdefghijklm<#";
var smallSet = new HashSet<char>(smallString);
var largeSet = new HashSet<char>(largeString);
Benchmark("String, small", iterations, smallString);
Benchmark("String, large", iterations, largeString);
Benchmark("HashSet<char>, small", iterations, smallSet);
Benchmark("HashSet<char>, large", iterations, largeSet);
}
static void Benchmark(string title, int iterations, IEnumerable<char> set)
{
var sw = Stopwatch.StartNew();
for (var i = 0; i < iterations; i++)
{
set.Contains('s');set.Contains('%');set.Contains('.');set.Contains('*');
set.Contains('g');set.Contains('6');set.Contains('q');set.Contains('d');
set.Contains('l');set.Contains('*');set.Contains('e');set.Contains('s');
set.Contains('k');set.Contains('&');set.Contains('R');set.Contains('f');
set.Contains('j');set.Contains('^');set.Contains('H');set.Contains('s');
set.Contains('h');set.Contains(')');set.Contains('D');set.Contains('k');
set.Contains('s');set.Contains('(');set.Contains('4');set.Contains('h');
set.Contains('g');set.Contains(')');set.Contains('r');set.Contains('3');
set.Contains('l');set.Contains('v');set.Contains('l');set.Contains('2');
set.Contains('k');set.Contains('x');set.Contains('o');set.Contains('X');
set.Contains('j');set.Contains('z');set.Contains('i');set.Contains('C');
set.Contains('h');set.Contains('.');set.Contains('2');set.Contains('B');
set.Contains('w');set.Contains(',');set.Contains('4');set.Contains('W');
set.Contains('!');set.Contains('m');set.Contains('0');set.Contains('5');
set.Contains('s');set.Contains('n');set.Contains('5');set.Contains('6');
set.Contains('@');set.Contains('b');set.Contains(',');set.Contains('*');
set.Contains('%');set.Contains('c');set.Contains('n');set.Contains('$');
set.Contains('^');set.Contains('/');set.Contains('a');set.Contains('%');
}
sw.Stop();
Console.WriteLine("{2} Time elapsed: {0}, single iteration: {1} ms",
sw.Elapsed, sw.Elapsed.TotalMilliseconds / iterations, title);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment