Не так давно в FastReport .NET была добавлена возможность загружать данные из csv-файла. Иными словами, файл в формате CSV теперь можно использовать в качестве источника данных.
Спустя какое-то время от одного из пользователей поступил интересный запрос в техподдержку. Он утверждал, что у него есть CSV файл который не открывается, вместо этого появляется сообщение об ошибке. Пользователь любезно предоставил этот файл для тестирования.
При первом взгляде возникла мысль - файл слишком большой, это и является причиной того, что он не открывается. Но при дальнейшем изучении выяснилось, что проблема не в размере файла. Как оказалось, файл не совсем соответствует спецификации CSV. В файле встречаются строки, не содержащие разделителей. Судя по всему, они используются в качестве комментариев, при этом никаких данных в себе не несут.
Было принято решение игнорировать подобные строки при загрузке данных. В результате файл стал загружаться без проблем.
Казалось бы, проблема решена и можно успокоиться, но не давала покоя идея о большом csv-файле. После недолгих поисков был найден действительно огромный файл. Размер этого файла 441 мегабайт, казалось бы - не очень внушительно, но, тем не менее, это 31 столбец и 2 458 525 строк.
Тестирование загрузки этого файла принесло двоякие результаты. С одной стороны, файл открывался, что несомненно радовало. Но очень печалило то, что на загрузку файла уходило без малого полчаса.
Как известно путей решения этой проблемы два. Но покупать новый компьютер как-то не хотелось. Поэтому пришлось потратить некоторое время на оптимизацию кода. В результате удалось добиться загрузки файла в течение двух минут.