Поток файла в синтаксический анализатор SAX и считывание его в память в кусках.
SAX дает вам много контроля и имеет смысл управлять событиями. Апи немного сложно понять, вам нужно обратить внимание на некоторые вещи, например, когда вызывается метод characters (), но основная идея заключается в том, что вы пишете обработчик содержимого, который вызывается, когда начинается и заканчивается каждый читается элемент xml. Таким образом, вы можете отслеживать текущий xpath в документе, определять, какие пути имеют данные, которые вас интересуют, и определить, какой путь обозначает конец фрагмента, который вы хотите сохранить или передать или каким-либо другим способом.
Поскольку ваши данные отсортированы, вы можете перейти к O (log (N)) с немного измененным двоичным поиском , который возвращает результат на основе порога, а не точного совпадения. Однако я сомневаюсь, что поиск по этим 12 элементам - это то, что вас замедляет, поскольку вы не делаете ничего дорогостоящего, например, поиск в DOM. Вы должны использовать профилировщик javascript, например Firebug, чтобы увидеть, где на самом деле происходит замедление.