Skip to content

Instantly share code, notes, and snippets.

@yallie
Created February 22, 2013 09:48
Show Gist options
  • Save yallie/5012163 to your computer and use it in GitHub Desktop.
Save yallie/5012163 to your computer and use it in GitHub Desktop.
HashSet<char> benchmark, version #3.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
struct Program
{
static void Main()
{
const int iterations = 100000;
var smallString = "<>*";
var largeString = "@<>d+-0123456789abcdefghijklm<#";
var smallSet = new HashSet<char>(smallString);
var largeSet = new HashSet<char>(largeString);
var smallArray = smallString.ToCharArray();
var largeArray = largeString.ToCharArray();
Benchmark("String, small.", iterations, smallString);
Benchmark("String, large.", iterations, largeString);
Benchmark("HashSet<char>, small.", iterations, smallSet);
Benchmark("HashSet<char>, large.", iterations, largeSet);
Benchmark("char[], small.", iterations, smallArray);
Benchmark("char[], large.", iterations, largeArray);
}
static void Benchmark(string title, int iterations, string 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);
}
static void Benchmark(string title, int iterations, HashSet<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);
}
static void Benchmark(string title, int iterations, 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