Наверно нужно было еще проверить работу с большими файлами, так как в этом случае построчное чтение в цикле может занять куда больше времени чем чтение сразу в массив (которое кстати показало лучшее время), и если это так, то написать функцию для другого метода.