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"))
        Return System.Linq.Enumerable.Average(iterationDurations)
    End Function