Как вы профилируете / оптимизируете инструмент моделирования? - PullRequest
1 голос
/ 28 ноября 2008

В прошлом и с перерывами сейчас я использовал инструменты моделирования, такие как Easy Java Simulations и NetLogo .

Они являются отличными инструментами для визуального моделирования различных математических / компьютерных концепций, потому что «все, что вам нужно сделать» - это написать цикл моделирования - графика и т. Д. Обрабатываются для вас.

Однако, одна вещь, которую я заметил, заключается в том, что с помощью таких инструментов чрезвычайно сложно улучшить время выполнения / скорость моделирования, поскольку внутренности реализации скрыты под поверхностью.

В общем, есть отличная документация по использованию инструментов симулятора, но я ничего не нашел по улучшению времени выполнения.

Например, скажем, вы реализуете метод Ньютона для поиска корня. Это простой алгоритм, но в зависимости от

  • тип используемого графического вложения или
  • выбраны различные другие различные варианты

Симуляция будет работать на разных скоростях.

Есть ли способ определить «оптимальное» отображение данных симуляции?

Я думаю об этом в случае использования такого инструмента для обучения классам по моделированию / научному программированию.

Ответы [ 3 ]

3 голосов
/ 02 декабря 2008

Вы можете попробовать использовать Repast Symphony инструментарий симуляции агентов. Это зрелая, бесплатная среда программирования с открытым исходным кодом и множеством полезных функций. Вы можете интегрировать Repast с Eclipse, который имеет плагин profiler .

2 голосов
/ 18 октября 2012

С Netlogo вы можете использовать расширение Profiler


    extensions [profiler]

См. документацию по профилированию на домашней странице netlogo

1 голос
/ 28 ноября 2008

Если ничего не помогает, вы можете использовать комбинацию этих двух подходов:

  • Второе предположение об окружающей среде: спросите себя, как бы вы реализовали ее функции, а затем определите, какая функция, вероятно, потребует наименьших вычислительных затрат.
  • Метод проб и ошибок: просто сравните различные методы, протестировав их. Очень полезно, если в среде есть какое-то средство для синхронизации вашего кода, например функция, которая (точно) сообщает вам, сколько сейчас времени.

Не забывайте о таких эффектах, как кэширование памяти и оптимизация. Если вы попытаетесь использовать определенную функцию в определенном контексте, она может работать не так, как раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...