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

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

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

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

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

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

И подвопрос: для файлов примерно какого размера (+-полмегабайта) или какого числа элементов (+-1000), или числа вершин элементов (+-1000) подобные ухищрения имеют смысл на не очень мощных и на хороших компьютерах? Эмпирически-экспертно, конечно.
Просмотров: 46089
 
Непрочитано 18.09.2013, 19:26
#61
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Мне говорят, что в Автокаде просто по разу просмотреть 1000 элементов никак в 0.01 секунды не уложишься. И т.д.
На лиспе может быть. Но на ARX - очень сомнительно
zamtmn вне форума  
 
Автор темы   Непрочитано 18.09.2013, 19:48
#62
АлексЮстасу

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Но на ARX - очень сомнительно
Это мне и сказал ARX-вец, хотя и не очень еще опытный.
АлексЮстасу вне форума  
 
Непрочитано 18.09.2013, 19:51
#63
gomer

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


лисп на порядок медленнее, чем аркс
gomer вне форума  
 
Непрочитано 18.09.2013, 21:04
#64
hwd

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


Цитата:
Сообщение от АлексЮстасу
Мне говорят, что в Автокаде просто по разу просмотреть 1000 элементов никак в 0.01 секунды не уложишься. И т.д.
На лиспе может быть. Но на ARX - очень сомнительно.
Цитата:
Сообщение от АлексЮстасу
Это мне и сказал ARX-вец, хотя и не очень еще опытный.
Говорят кур доят... Это с каких пор AutoLISP\Visual Lisp стал быстрее, чем C++ или .NET?.

Теперь насчёт этого:
Цитата:
Сообщение от zamtmn Посмотреть сообщение
по разу просмотреть 1000 элементов никак в 0.01 секунды не уложишься.
Это звездёж и вот тому подтверждение. Результаты обозначены на .NET, а ARX будет даже побыстрее (хоть и не намного). Как видим в файле, объёмом 51Мб на то, чтобы в итерации перебрать 736 323 примитива, уходит 0,278 сек. А теперь разделите 0,278 на 736,323 и узнаете, за какое время просмотрено 1000 элементов: 0,000378 сек.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 18.09.2013 в 21:19.
hwd вне форума  
 
Автор темы   Непрочитано 18.09.2013, 21:13
#65
АлексЮстасу

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


Цитата:
Сообщение от hwd Посмотреть сообщение
Результаты обозначены на .NET, а ARX будет даже побыстрее (хоть и не намного). Как видим в файле, объёмом 51Мб на то, чтобы в итерации перебрать 736 323 примитивов, уходит 0,278 сек.
А вот это уже серьезно вдохновляет!
АлексЮстасу вне форума  
 
Непрочитано 18.09.2013, 21:15
#66
hwd

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
А вот это уже серьезно вдохновляет!
Но если делать через ж@пу, то эти же данные можно перебирать и целых 5 мин 36 сек.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 18.09.2013, 21:17
#67
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


hwd
Цитаты все попутаны
>>Говорят кур доят... Это с каких пор AutoLISP\Visual Lisp стал быстрее, чем C++ или .NET?.
очень сомнительно - значит я сомневаюсь что ARX не осилит такой элементарщины. И что имхо он гораздо быстрее. Но точно сказать немогу - не в зуб ногой в нем
zamtmn вне форума  
 
Непрочитано 18.09.2013, 21:20
#68
hwd

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Цитаты все попутаны
Спасибо, исправил.
Цитата:
Сообщение от zamtmn Посмотреть сообщение
очень сомнительно - значит я сомневаюсь что ARX не осилит такой элементарщины.
Значит я тебя неправильно понял.

Цитата:
Сообщение от АлексЮстасу
А вот это уже серьезно вдохновляет!
А эта фраза свидетельствует о том, что ты нихрена не смотришь ссылки, которые тебе дают в ответах. В #3 я тебе уже писал об этом эксперименте:
Цитата:
Сообщение от hwd
Например, итерация чертежа, размером 50Мб, с выборкой всех ObjectId и их группировкой по типам примитивов у меня заняло меньше секунды.
а в #12 я тебе давал ссылку на то, что тебя так "вдохновило" аж в посте #65 (спустя четыре страницы).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 18.09.2013 в 21:32.
hwd вне форума  
 
Непрочитано 18.09.2013, 21:44
#69
gomer

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


Цитата:
AcDbZombieObject
gomer вне форума  
 
Непрочитано 18.09.2013, 22:28
#70
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от gomer Посмотреть сообщение
Цитата:
AcDbZombieObject
ну да, особенное чувство юмора у автодеска
смотрел тут...


Код:
[Выделить все]
 if (entId.ObjectClass.Name == "AcDbZombieEntity")
{
ProxyEntity ent =  (ProxyEntity)tr.GetObject(entId, OpenMode.ForRead);
}
Boxa вне форума  
 
Непрочитано 19.09.2013, 01:01
#71
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Щас глянул выложенные файлы в автокаде, извиняюсь за ошибки в них - в линуксе брикс грузил их не ругаясь - поэтому недоглядел. Хотя в принципе нестрашно - восстановление помогает
zamtmn вне форума  
 
Непрочитано 19.09.2013, 01:42
#72
gomer

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
в линуксе брикс грузил их не ругаясь
брикскад много чего не считает за ошибку...
gomer вне форума  
 
Автор темы   Непрочитано 19.09.2013, 02:29
#73
АлексЮстасу

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


Цитата:
Сообщение от hwd Посмотреть сообщение
А эта фраза свидетельствует о том, что ты нихрена не смотришь ссылки, которые тебе дают в ответах. В #3 я тебе уже писал об этом эксперименте:
Например, итерация чертежа, размером 50Мб, с выборкой всех ObjectId и их группировкой по типам примитивов у меня заняло меньше секунды.
а в #12 я тебе давал ссылку на то, что тебя так "вдохновило" аж в посте #65 (спустя четыре страницы).
Эта фраза свидетельствует о том, что я совсем в программировании не спец., и элементарно не ведал, что даже само считывание элементов может представлять проблему.
И до #60 пытался сконцентрировать внимание на основном вопросе темы.
Но в первую очередь о том, что хорошие идеи находят признание.

Запрашиваемый пример задачи выложен в #43. Сейчас он пока сузился до создания пересечений. Тестовые файлы: большой в #48 и меньший в #50.
Есть ли шанс получить в Автокаде скорость обработки, сравнимую с результатами zamtmn?
Пока что получены только отрицательные результаты обработки лисп-программой BreakObjects и фирменной Break Intersections от Autocad Map 3D - не могут они обработать больший файл вообще, а меньший наполовину.
От тех же, кто просил примеры задачи, результатов не поступило

Последний раз редактировалось АлексЮстасу, 19.09.2013 в 02:59.
АлексЮстасу вне форума  
 
Непрочитано 19.09.2013, 03:52
#74
trir


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


regular.dxf
Цитата:
SELECT t1.featid as f1, t2.featid as f2, astext(t1.geom), astext(t2.geom)
FROM fdo_test.t1 as t1, fdo_test.t1 as t2
where t1.featid<>t2.featid and st_Intersects(t1.geom, t2.geom)=1
- 383 секунды, key_buffer_size = 104857600
Изображения
Тип файла: jpg test_sp.jpg (364.1 Кб, 210 просмотров)

Последний раз редактировалось trir, 19.09.2013 в 04:12.
trir вне форума  
 
Автор темы   Непрочитано 19.09.2013, 04:30
#75
АлексЮстасу

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


Цитата:
Сообщение от trir Посмотреть сообщение
- 383 секунды, key_buffer_size = 209715200
Т.е. над оптимизацией придется поработать самим?
АлексЮстасу вне форума  
 
Непрочитано 19.09.2013, 07:08
#76
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


trir
>>key_buffer_size = 104857600
это координаты пересечений или порезаные линии?
zamtmn вне форума  
 
Непрочитано 19.09.2013, 07:26
#77
trir


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


key_buffer_size - это размер индекса в памяти
trir вне форума  
 
Непрочитано 19.09.2013, 07:57
#78
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
От тех же, кто просил примеры задачи, результатов не поступило
http://forum.dwg.ru/showpost.php?p=1152361&postcount=89
В автокаде программа работала в течение часа
gomer вне форума  
 
Непрочитано 19.09.2013, 10:03
#79
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>key_buffer_size - это размер индекса в памяти
это я понял. Только интдекс та чего?
zamtmn вне форума  
 
Непрочитано 19.09.2013, 10:14
#80
trir


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


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

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документация Проектировщику на Torrents DEM Разное 262 24.02.2024 17:19
Жилые и общественные здания: краткий справочник инженера-конструктора. Под ред. Ю.А. Дыховичного и В.И. Колчунова. 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