How to benchmarks the difference between BinarySearch and FindIndex in C#

1 Answer

0 votes
using System;
using System.Collections.Generic;
using System.IO;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        const int max = 7000;

        static string[] GetArray()
        {
            List list = new List();
            for (int i = 0; i < max; i++)
                list.Add(Path.GetRandomFileName());
            
            string[] array = list.ToArray();
            Array.Sort(array);
            
            return array;
        }

        static void Main(string[] args)
        {
            string[] array = GetArray();

            var tm1 = Stopwatch.StartNew();
            for (int i = 0; i < max; i++)
            {
                Array.BinarySearch(array, array[i % max]);
            }
            tm1.Stop();

            var tm2 = Stopwatch.StartNew();
            for (int i = 0; i < max; i++)
            {
                Array.FindIndex(array, element => element == array[i % max]);
            }
            tm2.Stop();
            Console.WriteLine(tm1.Elapsed.TotalMilliseconds.ToString("0.00 ms")); // 6.44 ms // BinarySearch
            Console.WriteLine(tm2.Elapsed.TotalMilliseconds.ToString("0.00 ms")); // 266.44 ms // FindIndex
        }
    }
}

/*
run:
  
6.44 ms
266.44 ms

*/


answered Mar 1, 2015 by avibootz

Related questions

3 answers 256 views
1 answer 138 views
138 views asked Dec 3, 2020 by avibootz
1 answer 160 views
160 views asked Apr 29, 2020 by avibootz
2 answers 257 views
...