Mercury13 Я опять так и не понял задачу (нет, может я дурак =): что такое дму, и как одна строка преобразовывается во много элементов? И почему вы храните всё это именно в списке? Какие запросы вам потом на этом списке надо выполнять? Судя по тому что написано сейчас, может быть вам действительно стоит посмотреть в сторону деревьев? Как вариант ещё в сторону map reduce посмотреть для формирования всего этого, но пока больше ничего не могу сказать.
Честно говоря, я ничего не понял. Если вы просто проходитесь по файлу, и добавляете каждую строчку из него в новый элемент списка, то сложность алгоритма составляет O(n). Если таки нет, объясните лучше, что вы делаете.