1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Помогите с оптимизацией

Тема в разделе "Delphi - программирование", создана пользователем YesNo, 26 фев 2006.

Статус темы:
Закрыта.
  1. YesNo

    YesNo Гость

    Репутация:
    0
    Здравствуйте!
    Проблема такова - есть программа, рассчитывающая, сколько штук коробок некоторых размеров войдет в некоторый контейнер, причем предпочтение отдается сначала тяжелым, потом большим коробкам и т.д. (коробки могут быть нескольких видов, с указанием количества)
    Алгоритм здесь моего сочинения, он итерационный (циклы и условия), вот только при больших размерах коробок\контейнера он … мягко говоря «виснет»…
    В связи с необходимостью графического построения схемы расположения коробок, я использую несколько форм и, как результат, глобальные переменные. Все ничего, да пара-тройка глобальных объектов типа массив некоторого класса, не особо добавляют скорости вычислений; к тому же весь алгоритм строиться на обработке булевого массива, описывающего содержимое контейнера по сантиметрам (занят\свободен). Так как размеры этого массива доходят до 1300 на 300 , то в результате обработки выполняется около 390000 операций.
    Беда в том, что в моей реализации алгоритма ничего нельзя выделить в отдельный поток\потоки, все операции зависят от предыдущих и влияют на последующие…
    Вот такой кошмар.
    Я прошу вашей помощи – может кто посоветует, как увеличить скорость работы всей этой радости?
    Хотелось бы попробовать ускорить работу с памятью, но эта тема мне незнакома. Подкиньте линков по работе с памятью в Дельфи на худой конец.
    Заранее спасибо. (прога в аттаче)
     

    Вложения:

    • Packer.rar
      Размер файла:
      188,7 КБ
      Просмотров:
      70
    • Packer.rar
      Размер файла:
      188,7 КБ
      Просмотров:
      77
  2. Barmutik

    Barmutik Гость

    Репутация:
    0
    Мда .. код конечно я не смотрел .. но скажу сразу ..

    Это стандартная задача раскроя\упаковки в 3-х мерном пространстве... Для решения её в частном(!!!!) случае существует много алгоритмов ... люди по этой теме диссертации пишут ...

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

    Для ускорения скорости используйте не массивы а более быстрые структуры .. ну к примеру деревья ... также можете воспользоватся другим менеджером памяти ... к примеру в нащих проектах после замены стандратного борляндовского менеджера памяти на FastMM скорость выросла на 30%...

    Так же к примеру если проект компилять Delphi 7 то он будет работать на 15% быстрее с операция по памяти чем если Delphi 7 Update Pack 1

    Правда в Вашем случае когда построение идёт перебором, эти способы врядли помогут .. нужно координально менять алгоритм ... потому как с увеличением количество коробок время рассчёта растёт по экспоненте .. а значит шансов закончить работу в общем случае у программы нет ...
     
Загрузка...
Похожие Темы - Помогите оптимизацией
  1. Tayrus
    Ответов:
    2
    Просмотров:
    51
  2. KanycTa
    Ответов:
    1
    Просмотров:
    53
  3. Samyrro
    Ответов:
    1
    Просмотров:
    62
  4. Tayrus
    Ответов:
    0
    Просмотров:
    52
  5. bronnn
    Ответов:
    0
    Просмотров:
    112
Статус темы:
Закрыта.

Поделиться этой страницей