Я часто сталкиваюсь с проблемами производительности, когда я XSL преобразовываю большие объемы данных в HTML. Эти данные обычно представляют собой всего лишь пару очень больших таблиц примерно такой формы:
1
abc
1
def
2
ghi
Во время преобразования я хочу визуально сгруппировать записи, подобные этой.
+--------------+
| Group 1 |
+--------------+
| abc |
| def |
+--------------+
| Group 2 |
+--------------+
| ghi |
+--------------+
Глупая реализация - это (набор взят из http: / /exslt.org. Фактическая реализация немного отличается, это просто пример):
Легко видеть, что это имеет тенденцию к сложности O (n ^ 2)
. Хуже того, ведь в каждой записи много полей. Обрабатываемые данные могут достигать нескольких десятков МБ, количество записей может доходить до 5000. В худшем случае каждая запись имеет свою группу и 50 полей. И что еще хуже, возможен еще один уровень группировки, что делает это O (n ^ 3)
Теперь было бы довольно много вариантов:
/ table / record / group
явно быстрее в этом случае использования, чем подход
. Как вы думаете, как можно уменьшить эту O (n ^ 2)
сложность?