Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Дмитрий Загорулькин от 31-01-2014, 20:08:26

Название: Сравнение производительности VisualLisp и .NET
Отправлено: Дмитрий Загорулькин от 31-01-2014, 20:08:26
В понедельник можно будет сравнить этот способ с тем, который я нацарапаю. Добавь (если тебе не сложно) в обозначенный LISP пару строк кода, сообщающих о времени выполнения, чтобы можно было более точно сравнивать в т.ч. и по временным затратам.
Сравнивать NET и LISP в скорости все равно что гоночный болид и велосипед :) Для чистоты эксперимента, надо на NET переписать.
Название: Re: Сравнение производительности VisualLisp и .NET
Отправлено: Александр Ривилис от 31-01-2014, 20:13:29
Сравнивать NET и LISP в скорости все равно что гоночный болид и велосипед
Не всегда. Думаю, что LISP не выиграет почти ни при каких условиях, но длительность операций типа GetPointAtParameter зависит от скорости ядра AutoCAD, а не от языка программирования.
Название: Re: Сравнение производительности VisualLisp и .NET
Отправлено: Дима_ от 31-01-2014, 20:55:06
Если требуется написать функцию под большое число элементов, лисп, как ни странно, работает быстрее  - я как-то хотел "форсировать" такую  - получилось наоборот (причем заметно даже "на глаз"), накладные расходы на преобразование аргументов нивелировали скорость обработки... Попробуйте сами - напишите .Net функцию которая складывает свои аргументы и сравните с (+ ...).
з.ы. сравнивать лисп и .Net по скорости можно только помножив на коэффицент скорости разработки.
Название: Re: Сравнение производительности VisualLisp и .NET
Отправлено: Александр Ривилис от 31-01-2014, 20:59:25
Попробуйте сами - напишите .Net функцию которая складывает свои аргументы и сравните с (+ ...).
Безусловно. Аналогично и с ObjectARX. И причина в том, что выделяется память под список resbuf, аргументы преобразовываются в список resbuf, производится поиск соответствующей функции в таблице функций и передача ей указателя на этот список. А если еще функция должна вернуть список, то это вообще... Например "дешевле" передать ObjectId (точнее ENAME) и получать на .NET или ObjectARX DXF-список, чем передавать DXF-список из LISP в .NET или ObjectARX.