VB.NET Iteration Time

I recently had reason to perform an operation on a bunch of files in a directory. I wanted to view a running average iteration time. It would have been easy to use a collection / generic / array, sum the contents and divide by the collection / generic / array length, but I knew there was a simpler way, having done it before. Linq to the rescue! Here the function :

 

    Public Function IterateFiles(path As String) As Double

        Dim iterationDurations As New List(Of Double)

        For Each fileName As String In IO.Directory.GetFiles(path, "*.*", IO.SearchOption.AllDirectories)

            Dim iterationStartTime As Date = Now

            ' ... Your operation here...

            Dim iterationEndTime As Date = Now

            iterationDurations.Add((iterationEndTime - iterationStartTime).TotalMilliseconds)

            Console.Write("{0} Avg Iteration Time {1}", vbCr, System.Linq.Enumerable.Average(iterationDurations).ToString("F2"))

        Next

        Return System.Linq.Enumerable.Average(iterationDurations)

    End Function