Во-первых, я думаю, что пришло время для Speed Rant: https://ericlippert.com/2012/12/17/performance-rant/
Вопрос в том, где именно сейчас находится узкое место. Мой instict говорит мне, что это должен быть диск. Вы работаете с файлами, обычно это Диск. В этом случае, если не считать загрузки каждой ячейки в память только один раз, ускорить особо нечего.
Однако вы выполняете довольно глубокую обработку строк, так как вам придется go через каждый символ. Так что на это может быть потрачено релевантных времени. Скорее всего, это не узкое место, а то, что вы можете отрицать как стоимость.
Возможно, вы сможете выполнить некоторую асинхронизацию, имея следующую загрузку ячейки / строки в фоновом режиме, пока вы обрабатываете эту. Такой подход, как Directory.EnumerateFiles()
vs Directory.GetFiles
, может работать: https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.enumeratefiles
Row, похоже, имеет функцию GetEnumerator . Но это может быть просто для получения перечислителя для кода, который требует перечислителей и фактически не включает отложенную / фоновую загрузку (например, как перечислитель, неявно созданный для циклов foreach).