Nano Hash - криптовалюты, майнинг, программирование

вычисление времени алгоритма в прологе

Я решаю головоломку Мост и Факел с помощью PROLOG. Поскольку я пробую разные методы поиска, мне нужно найти время расчета. Я имею в виду время начала и время окончания решения задачи по алгоритму.

Могу ли я получить доступ к системному времени из Prolog? Как?


  • Вы смотрели на предикат SWI Prolog time/1? 24.01.2014
  • Спасибо, я использовал get_time(T), и это решилось. 24.01.2014

Ответы:


1

Я рассчитал общее время в предикате, используя get_time(T), как это:

print_solution :- 
  **get_time(T1),**
  init(State), 
  solve(State,Solution,EndState), 
  writeln('Start state:'),
  writeln(State),
  writeln('Solution:'),
  writeln(Solution),
  writeln('Final state:'),
  writeln(EndState),
  **get_time(T2),**
  **DeltaT is T2- T1,**
  **write('time: '), write(DeltaT), write('  ms.\n'), nl.** 
24.01.2014
  • Для сравнения, может быть интересно удалить ** элементы и позвонить time(print_solution), чтобы посмотреть, что вы получите. Он покажет время, а также другую информацию профиля, такую ​​как количество выводов и т. д. Тогда вы сможете избежать добавления дополнительного кода таймера в свой предикат. 24.01.2014
  • ВАУ! БОЛЬШОЙ! Я понял. :-) Спасибо! 24.01.2014

  • 2

    Использование get_time/1 для оценки времени выполнения алгоритмов вычисляет время выполнения не отдельного алгоритма, а всего стека процессов вашего компьютера. Например, если ваша ОС решит запустить какой-то процесс в фоновом режиме, это уже может значительно изменить временную дельту.

    SWI-Prolog имеет специальную поддержку для отслеживания времени, затрачиваемого на вычисление всех вызываемых предикатов. Для этого вам необходимо (1) импортировать библиотеку statistics и (2) включить предикат, который вы хотите профилировать, в profile/1.

    Например:

    :- use_module(library(statistics)).
    
    run_test:-
      profile(my_predicate(MyArgument)).
    

    Надеюсь это поможет!

    05.04.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..