using System.Collections.Generic;
using System.Diagnostics;
void run(List<string> L1, List<string> L2)
Stopwatch stopWatch = new Stopwatch();
for (int i = 0; i < 10; i++)
intersect += stopWatch.ElapsedMilliseconds;
any += stopWatch.ElapsedMilliseconds;
Overlaps(L1.ToHashSet(), L2.ToHashSet());
overlaps += stopWatch.ElapsedMilliseconds;
Console.WriteLine("Intersect: " + intersect + "ms");
Console.WriteLine("Any: " + any + "ms");
Console.WriteLine("HashSet.Overlaps: " + overlaps + "ms");
private static bool Any(List<string> lst1, List<string> lst2)
return lst1.Any(lst2.Contains);
private static bool Intersect(List<string> lst1, List<string> lst2)
return lst1.Intersect(lst2).Any();
private static bool Overlaps(HashSet<string> lst1, HashSet<string> lst2)
return lst1.Overlaps(lst2);
public static void Main()
Console.WriteLine("No Overlap:");
Enumerable.Range(0, 4000).Select(x => x.ToString()).ToList(),
Enumerable.Range(4000, 4000).Select(x => x.ToString()).ToList());
Console.WriteLine("\nOverlap:");
Enumerable.Range(0, 4000).Select(x => x.ToString()).ToList(),
Enumerable.Range(0, 4000).Select(x => x.ToString()).ToList());