Это трудно дать ответ без дальнейших подробностей. Из маленького, что я вижу, могу предложить:
- Что делает функция1? Он содержит какой-либо цикл, зависящий от значения? Если он линейный по своему параметру (т. Е. Работает примерно в постоянное время), то вы можете повысить производительность за счет перехода на более быстрый процессор. Если программа потребляет память (кэширование и т. Д.), То вы должны попытаться предоставить JVM больше памяти (http://tinyurl.com/8ccrzwo)
- Откуда берутся Listvalues? Записывает ли он записи базы данных? Если да, то где база данных? Если он работает на вашем ПК, возможно, вы улучшите производительность, обновив процессор и/или предоставив больше памяти серверу БД (или даже изменив максимальные параметры потока). Если он находится на внешнем сервере, на стороне клиента вы можете не много сделать (кроме проверки соединения/полосы пропускания)
Наконец, единственное существенное улучшение, которое я могу угадать из вашего кода, - попробовать параллельная (т. е. многопоточная версия), но, как я уже сказал, трудно сказать больше, без подробностей). Небольшое усовершенствование может исходить от перезаписи ваш код таким образом:
for (Type item: listValues)
item.setParameter (function1 (item));
Это позволяет избежать вызывать list.get() дважды (что немного дороже), самое главное, он перебирает список с помощью Collection.iterator() , который, если у вас есть LinkedList, значительно быстрее, чем использование индекса.
Обратите внимание, что я также переименовал ваши переменные и типы в соответствии с соглашениями Java (и грамматикой английского языка).
EDIT: из комментария ниже, я понимаю, я должен был упомянуть об общем вопросе, как оценить производительность программы и как ее можно улучшить? Прежде всего, вы должны приобрести знания об общих алгоритмах и отраслях математики, таких как теория графов или исследования операций. Существует также теория вычислительной сложности, которая позволяет анализировать и оптимизировать алгоритм (http://tinyurl.com/q52zxs2).
Во-первых, спасибо за ответ. Во-вторых, я не писал больше деталей, потому что моя цель - не оптимизировать функцию, а понять, даже если с оптимизированным кодом материал дает разницу во времени исполнения, и если, например, мой размер списка стал огромным, как 1000000000, и мне нужен ответ максимум 10 минут, что я могу сделать? его невозможно сократить время или я нуждаюсь в другом передовом материале может выполнить эту функцию менее чем за 10 минут. – osselosse
См. Дополнение, которое я сделал для своего ответа. Помимо общего случая, это действительно зависит от вашей функции. В общем, программа, работающая с заданной скоростью на данном компьютере, может работать быстрее на более мощном компьютере. Но это не всегда так, например, если оно действительно плохо написано и содержит условия блокировки, или если оно сильно ухудшается (то есть его производительность быстро ухудшается с размером списка), он будет зависать или замедляться даже на самом мощный компьютер во вселенной. – zakmck