Как правило, лучший способ - выяснить, где находится ваше узкое место, и исправить это.Обычно вы обнаружите, что 90% своего времени вы тратите на небольшую часть кода, и именно на этом вы хотите сосредоточить свои усилия.
Как только вы выяснили, что занимает много времени,сосредоточиться на улучшении ваших алгоритмов.Например, удаление дубликатов из ArrayList может быть сложностью O (n²), если вы используете наиболее очевидный алгоритм, но его можно уменьшить до O (n), если вы используете правильные структуры данных.
Onceвы выяснили, какие части вашего кода занимают больше всего времени, и вы не можете понять, как лучше это исправить, я бы посоветовал сузить ваш вопрос и опубликовать еще один вопрос здесь, в StackOverflow.
Редактировать
Как это ни странно выражает @oxbow_lakes, не все узкие места в производительности можно найти в характеристиках кода big-O.Я, конечно, не собирался подразумевать, что они были.Поскольку вопрос был о «общих методах» оптимизации, я старался придерживаться общих идей, а не говорить об этой конкретной программе.Но вот как вы можете применить мой совет к этой конкретной программе:
- Посмотрите, где у вас узкое место.Есть несколько способов профилировать ваш код, начиная от дорогостоящего программного обеспечения для профилирования и заканчивая хакингом.Скорее всего, любой из этих методов покажет, что ваша программа тратит 99% своего времени на ожидание ответа от Google.
- Сосредоточьтесь на алгоритмах.Прямо сейчас ваш алгоритм (примерно):
- Разбор XML
- Создание списка слов
- Для каждого слова
- Пинг Google для проверки орфографии.
- Возвращаемые результаты
Поскольку большая часть вашего времени проводится в фазе "ping Google", очевидный способ исправитьэто позволит избежать выполнения этого шага больше, чем необходимо.Например:
- Анализ XML
- Создание списка слов
- Отправка списка слов в службу правописания.
- Анализ результатов проверки правописанияservice.
- Вернуть результаты
Конечно, в этом случае наибольшее увеличение скорости, вероятно, будет происходить при использовании средства проверки орфографии, которое работает на той же машине, но это не всегдаопция.Например, TinyMCE запускается как программа javascript в браузере, и она не может позволить себе загрузить весь словарь как часть веб-страницы.Поэтому он упаковывает все слова в отдельный список и выполняет один AJAX-запрос, чтобы получить список тех слов, которых нет в словаре.