There ' Этот сценарий называется svnmerge.py , который я пытаюсь немного настроить и оптимизировать. Я совершенно новичок в Python, так что это непросто.
Текущая проблема, похоже, связана с классом под названием RevisionSet
в скрипте. По сути, он создает большую хеш-таблицу (?) Логических значений с целочисленными ключами. В худшем случае - по одной на каждую ревизию в нашем репозитории SVN, а сейчас их около 75 000.
После этого он выполняет множество операций над такими огромными массивами - сложение, вычитание, пересечение и так далее. Это простейшая реализация O (n), которая, естественно, работает довольно медленно на таких больших наборах. Всю структуру данных можно оптимизировать, поскольку существуют длинные интервалы непрерывных значений. Например, все ключи от 1 до 74 000 могут содержать true
. Также скрипт написан для Python 2.2, довольно старой версии, и мы все равно используем 2.6, так что там тоже есть что выиграть.
Я мог бы попытаться собрать это вместе, но это будет сложно и занимает много времени - не говоря уже о том, что это может быть где-то уже реализовано. Хотелось бы получить опыт обучения, но сейчас важнее результат. Что вы посоветуете мне сделать?