galambalazs правильно: несортированные данные означают, что вам нужно пройти через все это, чтобы найти то, что вам нужно. Но это только небольшая часть вопроса.
При обработке нескольких файлов, вероятно, большая часть вашего времени будет занята файловым вводом / выводом. По компьютерным стандартам требуется много времени, чтобы найти файл в каталоге и открыть его. Но это затраты, которые вы будете нести в основном независимо от того, какую программу вы используете.
Другая часть уравнения производительности - это тип используемого вами анализатора. В зависимости от структуры вашего XML, у вас есть выбор использования рукописного синтаксического анализатора, синтаксического анализатора XML DOM или синтаксического анализатора Sax.
Если теги, окружающие искомые данные, всегда располагаются в одной строке с этими данными, и двусмысленность невозможна, тогда допустимое чтение файла построчно и поиск либо по строке, либо по регулярному выражению. Многие люди на SO будут протестовать, что сопоставление регулярных выражений - это ужасный способ обработки XML, и это в целом правильно; это быстрый и грязный способ выполнять поиск в очень специфическом и ограниченном наборе случаев, и он очень хрупок по отношению к структуре XML, с которой вы в конечном итоге работаете.
Анализатор DOM "вдыхает" весь ваш XML-документ в структуру в памяти, которую ваше приложение затем может последовательно искать, что бы это ни было. DOM хороши, когда вы хотите выполнить ряд сложных операций над деревом XML; для последовательного поиска это ужасная идея, потому что
- объем требуемой памяти пропорционален размеру файла, поэтому большой файл может вывести вас из памяти.
- большая структура данных должна быть построена из содержимого файла. После одного поиска он будет немедленно отброшен. Вычислительные ресурсы и ресурсы памяти будут потрачены впустую.
Следовательно, наиболее рекомендуемый подход - использовать SAX-парсер. Поиск в Google найдет для вас любимый язык. Парсер SAX просматривает ваш входной файл один раз, генерируя события для каждого элемента, который вы можете (и должны!) Обрабатывать соответствующим образом. Данные обрабатываются последовательно, и нет ничего, кроме того, что вы решили сделать с найденными данными. SAX-парсеры, как правило, значительно быстрее, чем DOM-парсеры, но требуют небольшого планирования обработки событий.