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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Компиляция и кое-что еще.

Компиляция и кое-что еще.

Ответ
Поиск в этой теме
Непрочитано 14.04.2008, 23:24 #1
Компиляция и кое-что еще.
vosh
 
Регистрация: 13.12.2007
Сообщений: 45

Добрый!
Снова за знаниями, вопроса два, первый основной.
Скомпилировал в визуал лисп редакторе программу, размер конечно у нее сократился, но прироста производительности при перелопачивании большого количества примитивов не заметил, собсна вопрос так и должно быть и если да то есть ли альтернативы по ускорению?

Второй вопрос (можно не отвечать ) - В процессе написания замусорил программу переменными, есть ли способ получить список их автоматически?
Просмотров: 3095
 
Непрочитано 14.04.2008, 23:38
#2
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
вопрос так и должно быть
Может да, а может быть и нет. Это зависит от алгоритма функции.
Цитата:
и если да то есть ли альтернативы по ускорению?
Переписать на ObjectARX - насколько велик будет выигрыш - не скажу. Все зависит от того, что делает программа. Но однозначно это будет самый быстрый вариант.
Цитата:
есть ли способ получить список их автоматически
Так при компиляции VisualLisp вроде создает список локальных переменных.
Александр Ривилис вне форума  
 
Непрочитано 15.04.2008, 08:41
#3
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


По второму вопросу можно сделать так:
1. Создаем глобальную переменную
(setq *global-var* (atoms-family 0))
2. Загружаем выполняемую программу и запускаем ее.
3. Создаем новую глобальную переменную
(setq *global-var-new* (atoms-family 0))
4. Выполняем код:
Код:
[Выделить все]
(foreach item *global-var* (setq *global-var-new* (vl-remove item *global-var-new*)))
Итог - список функций и переменных, оставшихся после выполнения функции + *global-var*.
CB вне форума  
 
Непрочитано 15.04.2008, 09:06
#4
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от vosh Посмотреть сообщение
Скомпилировал в визуал лисп редакторе программу, размер конечно у нее сократился, но прироста производительности при перелопачивании большого количества примитивов не заметил, собсна вопрос так и должно быть и если да то есть ли альтернативы по ускорению?
Все зависит от того, как написана программа. По моим личным тестам, программа ускоряется в 3 - 10 раз после компиляции. Но все зависит от самого кода, его можно написать и так, что никакой компилятор не разберется, как его можно ускорить... И еще, каждое обращение к командной строке, дает существенное замедление. Если все делать через ком строку - то компиляция вообще не даст прироста производительности.
PS. из моих наблюдений, самые большие тормоза в программе:
1. обращение к ком строке
2. (gc)
3. повторная загрузка, уже загруженных программ
3. режим отлова и/или игнорирования ошибок
4. множественные проверки одного и того же
5. работа с примитивами - т.е. не съем данных о геометрии, вычисление и отрисовка по результатам, а именно последовательная работа с примитивами, их преобразование, дополнительные построения и.т.д...
PS. написал список не учитывая важность пунктов, но считаю, что это основные моменты, которые тормозят больше всего...
Елпанов Евгений вне форума  
 
Непрочитано 15.04.2008, 09:26
#5
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Получить список глобальных переменных (валидация исходника) в редакторе vlide - Ctrl+Alt+C
Alaspher вне форума  
 
Непрочитано 15.04.2008, 09:36
#6
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Также можно посмотреть глобальные переменные и их значения в окне вставки поля в текст (Прочее->LispVariable).
Makswell вне форума  
 
Автор темы   Непрочитано 15.04.2008, 14:17
#7
vosh


 
Регистрация: 13.12.2007
Сообщений: 45


2 CB: таким образом, если я все правильно понял, я получу список глобальных переменных, которые я ввел своей прогой, у меня проблема наоборот в заголовке слишком много зарезервировано переменных, и надо проредить, узнав какие из них действительно используются.
2 all: По второму вопросу сегодня вечером разбираццо буду.
По первому, сегодня проэксперементирую наверняка, задам долгую множественную операцию и сравню результаты, о чем отпишусь.
ps : коммандную строку не использую принципиально, помоему на ней не сделать "быстрых" программ.
ps2: сделал один важный вывод: если изначально знаешь, что в будущем быстрота работы программы будет принципиальным вопросом, то лучше вводить побольше переменных и не проделывать многократно одно и то же действие, а присваивать значение переменной и работать уже с ней.
vosh вне форума  
 
Непрочитано 15.04.2008, 14:40
#8
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от vosh Посмотреть сообщение
в заголовке слишком много зарезервировано переменных, и надо проредить, узнав какие из них действительно используются.
Удали все перечисленные, как локальные, нажми Ctrl+Alt+C, скопипасть список переменных из строки, в которой будут перечисленны глобальные переменные. Одно НО - если используются команды и в них задействована pause, то её из списка локальных надо удалить, иначе будут глюки.

Цитата:
Сообщение от vosh Посмотреть сообщение
если изначально знаешь, что в будущем быстрота работы программы будет принципиальным вопросом, то лучше вводить побольше переменных и не проделывать многократно одно и то же действие, а присваивать значение переменной и работать уже с ней.
Совсем не факт - повторные вычисления, конечно нежелательны, но и само присвоение/чтение отнимает время. Лучше всего, когда результат вычислений функции попадает на вход другой функции, но и тут фанатизм неполезен.
Alaspher вне форума  
 
Непрочитано 15.04.2008, 14:49
#9
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Большая часть моих программ, относится к ресурсоемким и требует значительного времени на выполнение. После написания кода и его оценки по скорости выполнения, если она не устраивает, я начинаю вычислять самые медленные участки кода и переписываю их несколько раз, различными алгоритмами или подходами, постоянно сравнивая скорость выполнения. Оптимизация программ - самостоятельная тема, которой можно заниматься без конца - нет предела совершенству...
PS. Несколько раз, пытался написать список требований к коду, используя который, можно писать быстрые программы. Время объяснило мне, что в автолиспе, не может быть критических требований, сложнее, чем просто опрятный и оптимальный код - уловки из одной программы, могут не помочь в другой...
Елпанов Евгений вне форума  
 
Непрочитано 15.04.2008, 21:52
#10
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


Елпанов Евгений Я бы ещё в ваш список воткнул бы функцию entget, особенно для ACIS объектов, результат этой функции лучше один раз записать в переменную (как советует vosh), а то у меня в прогах эта командой и есть тот самый предел совершенства
Евгений А. вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Компиляция и кое-что еще.

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Москва не сразу строится Perezz!! Разное 20 21.04.2009 23:52
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Как не надо строить. Письмо от заказчика))) Fanatic13 Разное 9 24.09.2007 21:33