| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Оптимизация обработки большого числа элементов

Оптимизация обработки большого числа элементов

Ответ
Поиск в этой теме
Непрочитано 15.09.2013, 04:25 #1
Оптимизация обработки большого числа элементов
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 2,969

Наверное, есть отработанные и даже общепризнанные способы оптимизировать обработку в программах большого числа элементов dwg-файлов?
Я имею в виду программы, которые решают задачи вроде: найти все пересечения или найти все не пересекающееся, найти все, попадающее в контур или вне его, создать все возможные замкнутые контуры или т.п.
И имею в виду не использование чисто программных способов, а на уровне алгоритмов.
Может быть опытные поделятся, если не оч. большой секрет, конечно
Это нужно мне для общения с моим программистом, а может пригодиться начинающим программистом вообще.
Я сам не программист, но постараюсь в целом понять ответы, да и поспрашиваю, если что, у разбирающихся.

Как непосвещенный, я предполагаю, что в dwg-файле элементы хранятся в целом просто в порядке их поступления, т.е. их взаимные связи (соединение, наложение, пересечение и т.п.) никак не описаны, и их взаимное положение никак не структурировано, не описано. Это правильно? И поэтому, если действовать в лоб, в подобных программах приходится определять отношение всего со всем, и, возможно, не один раз?
Если же как-то ловко описать взаимное положение и/или взаимные связи элементов, то можно будет анализировать не все элементы, а только взаимно связанные или указанным образом расположенные. Что в теории скажется на скорости работы.

И подвопрос: для файлов примерно какого размера (+-полмегабайта) или какого числа элементов (+-1000), или числа вершин элементов (+-1000) подобные ухищрения имеют смысл на не очень мощных и на хороших компьютерах? Эмпирически-экспертно, конечно.
Просмотров: 42524
 
Непрочитано 15.09.2013, 04:39
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 4,780


Один ответ
trir вне форума  
 
Непрочитано 15.09.2013, 10:22
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Ты можешь итеративно перебрать все элементы базы данных чертежа, получив все ObjectId и попутно (если нужно) группируя результаты по своему усмотрению (всё зависит от твоего алгоритма обработки). Например, итерация чертежа, размером 50Мб, с выборкой всех ObjectId и их группировкой по типам примитивов у меня заняло меньше секунды.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 15.09.2013, 10:23
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 4,780


Цитата:
Если же как-то ловко описать взаимное положение и/или взаимные связи элементов
- это называется топология
trir вне форума  
 
Непрочитано 15.09.2013, 11:13
#5
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как непосвещенный, я предполагаю, что в dwg-файле элементы хранятся в целом просто в порядке их поступления, т.е. их взаимные связи (соединение, наложение, пересечение и т.п.) никак не описаны, и их взаимное положение никак не структурировано, не описано. Это правильно? И поэтому, если действовать в лоб, в подобных программах приходится определять отношение всего со всем, и, возможно, не один раз?
То что они храняться росто по порядку создания - это так. По второму вопросу - тут явно у вашего программиста пробелы в численных методах. Способов много - но каждый завистит от ситуации - вот подобная тема, я там излагал пару вариантов (#10,#13). Суть в общем сводиться к предварительному структурированию, либо индексированию данных в зависимости от предполагаемого их использования, в любом случае, даже если стуктура получается очень сложной для группировки - все обращение к автокаду (считывание характеристик объектов) - не более 1 раза - вся обработка должна происходить в памяти (благо с этим ресурсом сейчас в 99% задач проблем нет).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 15.09.2013, 14:23
#6
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,969


Цитата:
Сообщение от trir Посмотреть сообщение
Цитата:
Сообщение от trir Посмотреть сообщение
- это называется топология
Алгоритмы-то какие?

Цитата:
Сообщение от hwd Посмотреть сообщение
попутно (если нужно) группируя результаты по своему усмотрению (всё зависит от твоего алгоритма обработки)
В этом и состоит же, наверное, задача - как лучше группировать, какие самые универсальные и эффективные способы такого группирования?

Цитата:
Сообщение от Дима_ Посмотреть сообщение
вот подобная тема, я там излагал пару вариантов (#10,#13). Суть в общем сводиться к предварительному структурированию, либо индексированию данных в зависимости от предполагаемого их использования
Тему Вашу видел, и нашел еще пару тем об оптимизации, но создал эту, поскольку разбирались в них конкретные задачи.
Я надеялся, что опытные программисты поделятся проверенными, отработанными, более-менее универсальными подходами. Наверняка же такие есть. Пусть их будет не один, а два-три-четыре, чтобы выбрать подходящий под ту или иную частную задачу.

Еще подвопрос: что делается быстрее - получение габаритов элементов или списков их вершин? Габариты получают каким-то специальным методом или как раз просмотром координат вершин?
АлексЮстасу вне форума  
 
Непрочитано 15.09.2013, 14:31
#7
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Габариты получают каким-то специальным методом
да.
gomer вне форума  
 
Автор темы   Непрочитано 15.09.2013, 14:44
#8
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,969


Цитата:
Сообщение от gomer Посмотреть сообщение
да.
А что в целом быстрее - получить габариты или просмотреть вершины?
АлексЮстасу вне форума  
 
Непрочитано 15.09.2013, 14:49
#9
trir


 
Регистрация: 18.12.2010
Сообщений: 4,780


Цитата:
Алгоритмы-то какие?
Много их, а вместе они называются - Вычислительная Геометрия

Читать:
Ф. Препарата, М. Шеймос - Вычислительная Геометрия: Введение
Майкл Ласло - Вычислительная геометрия и компьютерная графика на C++

И все они реализованы в "Пространственных базах данных" - бери и пользуйся, самые лучшие ;=)
trir вне форума  
 
Непрочитано 15.09.2013, 15:29
#10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
А что в целом быстрее - получить габариты или просмотреть вершины?
габариты не всегда определяются положением вершин
gomer вне форума  
 
Автор темы   Непрочитано 15.09.2013, 15:49
#11
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,969


Цитата:
Сообщение от gomer Посмотреть сообщение
габариты не всегда определяются положением вершин
Вы имеете в виду габариты криволинейных элементов, текстовых и блоков?
АлексЮстасу вне форума  
 
Непрочитано 15.09.2013, 15:52
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
В этом и состоит же, наверное, задача - как лучше группировать, какие самые универсальные и эффективные способы такого группирования?
Всё зависит от того, как эти данные будут использоваться. Как вариант я когда-то показывал вот такую штуку.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 15.09.2013, 16:23
#13
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,969


Цитата:
Сообщение от hwd Посмотреть сообщение
Всё зависит от того, как эти данные будут использоваться. Как вариант я когда-то показывал вот такую штуку.
Вопрос был об оптимизации обработки геометрии данных, для ускорения анализа взаимного положения и взаимосвязи элементов. Например, для поисков пересечений, вложенности в контуры или т.п.
Если я правильно понял Вашу ссылку, то там речь идет об оптимизации обработки свойств элементов, например, текстовых стилей (сужу по "Пример целесообразного использования").
АлексЮстасу вне форума  
 
Непрочитано 15.09.2013, 16:48
#14
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Вы имеете в виду габариты криволинейных элементов, текстовых и блоков?
да. но вы до сих пор не раскрыли язык на котором будете обрабатывать данные
gomer вне форума  
 
Автор темы   Непрочитано 15.09.2013, 16:58
#15
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,969


Цитата:
Сообщение от gomer Посмотреть сообщение
да. но вы до сих пор не раскрыли язык на котором будете обрабатывать данные
Я думал, что язык значения для алгоритмов не имеет. Или незначительное. Потому и не упомянул. На ObjectARX.
Я допускаю, что в разных языках одни и те же действия с данными могут быть лучше-хуже обеспечены. Но здесь мне бы хотелось обсуждать больше алгоритмы, чем программистские приемы.
АлексЮстасу вне форума  
 
Непрочитано 15.09.2013, 17:21
#16
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 13,065


Оооо
Ты это лисперам расскажи про алгоритмы то....
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 15.09.2013, 17:36
#17
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


зависит не только от языка, но и от среды в которой работает алгоритм
gomer вне форума  
 
Непрочитано 15.09.2013, 17:45
#18
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Если я правильно понял Вашу ссылку, то там речь идет об оптимизации обработки свойств элементов
Нет, это просто элементарный пример на произвольную тему. Основная идея в том, чтобы быстро получать идентификаторы нужных объектов (на основе любых фильтров, соответствующих задаче), затем на основе этих идентификаторов получать сами объекты и выполнять любую их модификацию (при необходимости). В качестве условия фильтрации можно передать любое выражение, возвращающее логическое значение. В качестве операции можно передать любой метод, соответствующий обозначенной в интерфейсе сигнатуре.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 15.09.2013, 18:36
#19
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,969


Цитата:
Сообщение от DEM Посмотреть сообщение
Оооо
Ты это лисперам расскажи про алгоритмы то....
Цитата:
Сообщение от gomer Посмотреть сообщение
зависит не только от языка, но и от среды в которой работает алгоритм
Offtop: ...да, похоже, до обсуждения самих алгоритмов мы не доберемся. Видно, шибко они секретные. Или наоборот.
Цитата:
Сообщение от hwd Посмотреть сообщение
Нет, это просто элементарный пример на произвольную тему. Основная идея в том, чтобы быстро получать идентификаторы нужных объектов (на основе любых фильтров, соответствующих задаче), затем на основе этих идентификаторов получать сами объекты и выполнять любую их модификацию (при необходимости). В качестве условия фильтрации можно передать любое выражение, возвращающее логическое значение. В качестве операции можно передать любой метод, соответствующий обозначенной в интерфейсе сигнатуре.
Т.е. Ваш подход оптимизирует получение всех идентификаторов и всех объектов, и применение к ним каких-то операций. Это поможет программе в целом, но это же не оптимизация определения взаимного положения и отношений элементов друг к другу? Так понимаю, что оптимизация геометрических отношений элементов конечном итоге сводится к уменьшению числа рассматриваемых в каждый момент элементов?
АлексЮстасу вне форума  
 
Непрочитано 15.09.2013, 18:39
#20
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


так вы давайте задачу и обсудим ее, а так все как-то абстрактно...
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Оптимизация обработки большого числа элементов

Система Техэксперт дает уверенность в правильности и эффективности принимаемых инженерных решений!
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документация Проектировщику на Torrents DEM Разное 259 04.03.2020 08:17
Жилые и общественные здания: краткий справочник инженера-конструктора. Под ред. Ю.А. Дыховичного и В.И. Колчунова. 2011 (Впечатления и отзывы). Armin Поиск литературы, чертежей, моделей и прочих материалов 19 22.03.2018 15:41
Порекомендуйте литературу для повышения квалификации(грунты, геотехника) acid Поиск литературы, чертежей, моделей и прочих материалов 6 13.05.2015 22:14
Случайный эксцентриситет p_sh Прочее. Архитектура и строительство 14 22.07.2009 11:32
Защита от распространения большого числа dwg E.D. AutoCAD 24 21.11.2008 09:02