Тестирование производительности разных версий ACAD
На основе статьи от BricSys. Подумал, что будет небезынтересно сравнить производительность разных версий AutoCAD.
Чтобы не "порушить" боевое железо, использую виртуальную машину.
Характеристики виртуального PC
| OC |
Microsoft Windows 7 Pro x64 |
| RAM |
4 Gb |
Доступ к интернет-ресурсам закрыт на физическом компе. Файл виртуальной машины расположен на локальном диске физического компьютера (SSD).
Проверяем работу AutoCAD 2014, 2015, 2016 версий. Настройки профиля - по умолчанию (создается новый профиль с именем "TestCAD"; в ключах запуска используется ключ /nologo). Аппаратное ускорение графики определяется "автоматом". AutoCAD'ы запускаются один за другим, с предварительной очисткой каталога %Temp%. Код запускается вручную, никаких циклов.
Подготовка к тестированию
Набор для проведения теста производительности CAD-систем при выполнении операций создания и редактирования 2D объектов включает:
1) Файл timer.lsp, содержащий набор тестовых функций построения и редактирования 2D объектов.
2) Файл сценария flattimer.scr (необходим для запуска команды flatten в AutoCAD)
3) Тестовые чертежи
– test_S.dwg 1,5 Мб (39220 объектов);
– test_M.dwg 11,1 Мб (85965 объектов);
– test_L.dwg 20,5 Мб (343726 объектов);
– test_X.dwg 67,9 Мб (267356 объектов);
– test_R.dwg – файл с растровым изображением paris_12000.jpg (70 Мб)
4) Пакет LispBenchMark для тестирования LISP-функций и приложений (разработчик – Torsten Moses, Torsten_Moses@LayerManager.com).
Перед началом тестирования скопируйте все файлы из п.1-3 и папку LispBenchMark в один каталог, например, TestPack.
В настройках CAD системы укажите путь к этому каталогу и путь к папке LispBenchMark, находящейся в этом каталоге.
================================================================================================
Порядок выполнения тестов с помощью набора функций timer.lsp:
1. Выполните загрузку файла timer.lsp в тестируемую CAD-систему.
2. Для выполнения тестов введите в командной строке наименование соответствующей функции, указав, при необходимости, значения ее параметров. Например:
(full) – выполнение набора тестовых операций.
(opentimer 1) – тест скорости открытия чертежа с идентификатором 1 (открывает файл test_S.dwg)
(regentimer 5) – обновление чертежа, 5 повторов с вычислением среднего значения
и другие.
Подробное описание функций и параметров см. файл timer.lsp
Результаты выполнения тестов отображаются в окне История команд.
================================================================================================
Порядок выполнения тестов LispBenchMark:
1. Выполните загрузку файла Bench.lsp из папки LispBenchMark.
2. Для выполнения тестов введите в командной строке наименование соответствующей функции. Например:
BENCH – полный тест
BENCHS – тест стандартных функций LISP
BENCHVL – тест VL-функций
BENCHVLA – тест VLA-функций
BENCHVLAX – тест VLAX-функций
BENCHUSER – тест LISP приложения
и другие.
Подробное описание функций пакета LispBenchMark см. файл Bench.lsp
Результаты выполнения тестов отображаются в окне История команд и сохраняются в текстовых файлах в папке BenchLogs каталога LispBenchMark.
Пакеты распакованы в каталог
1 2
| C:\Autodesk\TestPack
C:\Autodesk\TestPack\LispBenchMarks |
В каждый AutoCAD в пути поиска добавляется эти каталоги. Все функции запускаются из консоли VLIDE. Виртуальная машина не деактивируется.
Прежде чем продолжать, хочу сказать пару ласковых авторам тестов...
Во-первых, раз уж тестируется AutoCAD, кто мешает сформировать файлы так, чтобы они при открытии не орали ни о том, что "Файл сделан в приложении, не лицензированном Autodesk"?
Во-вторых, предоставляя файлы, не помешает их чистить от мусора, которого там весьма приличное количество - вплоть до объектов нулевой длины!
В-третьих, про понятие "недоступных шрифтов", похоже, авторы не подозревают. Убил бы!
В-четвертых, и в самых главных: разрабатывая код, не помешает его тестировать потщательнее. Мне было лень воевать и полностью переписывать коды, поэтому я сделал следующее:
- Добавил обработку всех системных переменных
- Вызов каждой функции из (full) обрамил в свой vla-startundomark и vla-endundomark. Отсутствие подобных кусочков может привести (и нередко приводит) к дикому объему файлов отмены
- Опять же, из-за собственной паранойи я добавил обработку ошибок
- И, наконец, я убрал функции проверки скорости удаления и восстановления примитивов: срабатывали они не всегда корректно. Разбираться с причинами не было никакого желания. Код не оптимизировался никаким манером - хотя и следовало бы
Тестирование проходило только на функции (full), без вызовов Bench* - и без этого хватило "за глаза". Код запускаются в каждом файле dwg 3 раза, в результат попадает усредненное значение. Все это "богатство" было сведено в единую таблицу и посчитаны самые медленные версии AutoCAD на каждой операции на каждом файле. Отклонение в пределах плюс-минус 5% от среднего времени я посчитал погрешшностью измерения. Результаты свел в следующую таблицу:
Таблица с результатами
|
Выполняемая операция
|
test_S.dwg
(39220 объектов)
|
test_M.dwg
(85965 объектов)
|
test_L.dwg
(343726 объектов)
|
test_X.dwg (267356 объектов)
|
test_R.dwg файл с растровым изображением paris_12000.jpg (70 Мб)
|
|
opentimer
|
2014
|
2015
|
2015
|
2014
|
2014
|
|
pan
|
2015
|
2014
|
2014
|
2014
|
2014
|
|
select all
|
2014
|
2014
|
2016
|
2016
|
2014
|
2014: 00:00,792
2015: 00:00,950
2016: 00:00,963
Самый быстрый: 2014
Отклонение 2016 от самого быстрого (принят за 100%): 21,59%
|
2014: 00:00,525
2015: 00:00,545
2016: 00:00,619
Самый быстрый: 2014
Отклонение 2016 от самого быстрого (принят за 100%): 17,90%
|
|
move
|
2014
|
2016
|
2016
|
2014
|
2014
|
2014: 00:09,236
2015: 00:08,398
2016: 00:09,330
Самый быстрый: 2015
Отклонение 2016 от самого быстрого (принят за 100%): 11,10%
|
2014: 00:36,870
2015: 00:33,063
2016: 00:36,882
Самый быстрый: 2015
Отклонение 2016 от самого быстрого (принят за 100%): 11,55%
|
|
regen
|
2014
|
2016
|
2016
|
2014
|
2014
|
2014: 00:01,708
2015: 00:02,200
2016: 00:02,369
Самый быстрый: 2014
Отклонение 2016 от самого быстрого (принят за 100%): 38,70%
|
2014: 00:06,748
2015: 00:08,072
2016: 00:09,177
Самый быстрый: 2014
Отклонение 2016 от самого быстрого (принят за 100%): 36,00%
|
|
zoom
|
2014
|
2014
|
2014
|
2015
|
2014
|
|
scale
|
2015
|
2016
|
2016
|
2014
|
2014
|
2014: 00:08,679
2015: 00:08,513
2016: 00:09,332
Самый быстрый: 2015
Отклонение 2016 от самого быстрого (принят за 100%): 9,62%
|
2014: 00:35,954
2015: 00:33,660
2016: 00:36,279
Самый быстрый: 2015
Отклонение 2016 от самого быстрого (принят за 100%): 7,78%
|
|
audit
|
2014
|
2014
|
2014
|
2014
|
2014
|
|
rotate
|
2014
|
2014
|
2014
|
2016
|
2014
|
2014: 00:32,847
2015: 00:31,638
2016: 00:36,345
Самый быстрый: 2015
Отклонение 2016 от самого быстрого (принят за 100%): 14,88%
|
|
mirror
|
2015
|
2016
|
2014
|
2014
|
2016
|
2014: 00:08,368
2015: 00:08,452
2016: 00:09,106
Самый быстрый: 2014
Отклонение 2016 от самого быстрого (принят за 100%): 8,82%
|
2014: 00:00,002
2015: 00:00,002
2016: 00:00,003
Самый быстрый: 2014
Отклонение 2016 от самого быстрого (принят за 100%): 50,00%
|
|
full
|
2014
|
2016
|
2014
|
2014
|
2014
|
2014: 02:12,422
2015: 02:02,368
2016: 02:14,316
Самый быстрый: 2015
Отклонение 2016 от самого быстрого (принят за 100%): 9,76%
|
На случай, если смотреть на таблицу скучно, ниже приведены диаграммы на каждую функцию (картинки кликабельны).
Файл с результатами тестов лежит здесь: CADSpeedTestResults (формат архива - zip; формат файла -xlsx).
Подводя некоторые итоги, можно сказать следующее: 2016 в реальной жизни, скорее всего, будет интереснее 2014 и 2015: достаточно вспомнить о том, что аппаратное ускорение для 2014 и 2015 на виртуальном компьютере включалось, а для 2016 - нет; а также некоторую искусственность тестов (ну, тут уже никуда не денешься).
Критичными для 2016 могут выглядеть задачи выбора объектов на тяжелых файлах; регенерации при наличии слабой или несертифицированной видеокарты; зеркалирования растров (если они вставлены как OLE-объекты). Возможно, в дальнейшем эти вопросы будут решены - не знаю.
P.S. Если бы мне было не лень, я бы попробовал переписать тесты. Но мне лень 
---
Добавлено:
Здесь лежит архив с тестовыми файлами (216 Мб, учтите!). Содержимое:
readme.txt - штатное описание теста
test_?.dwg - файлы тестов
*ACAD.dwg - те же файлы, но прошедшие очистку в AutoCAD (в том числе и _.wblock). Настройки текстовых стилей и вычищение типов линий не производилось
timer.lsp - штатный тестовый lisp
timer_modified.lsp - модифицированный lisp, в котором сделаны некоторые дополнения (в том числе и лишние)
Похожее
Лёша, интересно было бы почитать о тестовых платформах (Unit Testing Framework), которые можно использовать для тестирования LISP приложений в AutoCAD. Есть какая-то информация на эту тему?
У меня по крайней мере нет. Если честно, у меня lisp-тестирование (с точки зрения нормального разработчика) поставлено из рук вон плохо: все тестирование выполняется вручную (программистом при написании кода + специально выделенным человеком).
Может быть, это связано с некоторой "обособленностью" лиспа от нормальных языков программирования, может быть - с моей ленью. Не знаю.
Здравствуйте!
А есть ли какая-нибудь информация по ускорению работы в Автокад с 3д на профессиональных видеокартах Nvidia Quadro и FirePro? Что планируется в будущем, или наоборот от чего уходим..?
Даст ли существенный прирост покупка профессиональной видеокарты по сравнению с геймерской при равной цене?
Будет ли толк от профессиональной видеокарты за 5-10т.р, по сравнению с геймерской за 15-20?
Я бы прежде всего проверял видеокарту на соответствие списку официально рекомендованных (на сайте Autodesk такой список есть).
А так - лично у меня подобной информации нет.
У меня была когда-то Quadro от NVidia (не топовая, но и не самая дешёвая). Из того, что бросилось в глаза: применительно к играм она была мягко говоря, на дохлую троечку. Аналогичная по цене игровая (так же от NVidia) ни в какое сравнение не шла. Применительно к AutoCAD я разницы не заметил между Quadro и игровой. Я брал Quadro для того, чтобы поковыряться с технологией CUDA. Но эту технологию сейчас уже поддерживают почти все (или просто все) современные видеокарты от NVIDIA, в т.ч. и игровые.
В наше время во многих серьёзных магазинах видеокарты можно брать на время (с предоплатой) для того, чтобы попробовать их. Я так помнится выбирал между Radeon и NVidia когда-то. Правда я не знаю магазинов, где аналогично на "потестить" можно взять современную Quadro.
Quadro стоит сумасшедших денег и покупать её основываясь лишь на рекламе сайта NVidia - это дорогой кот в мешке.
>Я бы прежде всего проверял видеокарту на соответствие списку официально рекомендованных (на сайте Autodesk такой список есть).
Я бы не стал 100% полагаться на это. Автодеск нередко на заборе пишет надписи, за содержимое которых не отвечает (многократно проверено на практике).
Добрый день!
Подскажите пожалуйста, работает ли тест (лисп) в AutoCAD 2013?
Также.
В Лисп timer
;;Для добавления/удаления операции добавить/удалить ; перед соответствующей функцией
(defun full (/ start_time end_time func_time full_time)
Куда нужно добавить ?
Заранее вам благодарен за ответ
Доброго. По идее должен (но я не проверял). Касаемо "добавления" - а какой результат надо получить?
Результат - повторить за вами тест.
Так попробуйте запустить timer_modified.lsp - там код уже подготовлен к использованию.
Доброе утро!
Запустил timer_modified.lsp выдает ошибку: Обнаружены ошибки программы. Рекомендуется сохранить чертеж и перезапустить программу."
Какую именно функцию / команду запускали? Я только что специально повторно скачал архив - подобное сообщение не получил.
AutoCAD2016. Открывались test_*_ACAD.dwg-файлы из архива. Запуск команды totp, функции full (без редактирования).
Обычно подобное сообщение выводится только при попытке восстановления какого-либо поврежденного файла.
Открываю в AutoCAD 2013.
Открываю файл.
Загрузил lisp.
Затем запускаю команду totp/
И говорит Обнаружены ошибки программы. Рекомендуется сохранить чертеж и перезапустить программу.”
Подскажите пожалуйста функции full (без редактирования) это что такое?
Может дело в AutoCAD 2013.
Значит, в файле присутствуют ошибки. После выполнения очистки - сохранить файл. В 90% случаев перезапуск AutoCAD не требуется, но я бы перезапустил AutoCAD и снова открыл этот файл dwg.
>> full (без редактирования)
Это значит, что в код не вносились никакие изменения. Прямо как есть, так и запускается:
Команда: _explodeallproxy Неизвестная команда "EXPLODEALLPROXY". Для вызова справки нажмите F1.
Команда: _removeallproxy Неизвестная команда "REMOVEALLPROXY". Для вызова справки нажмите F1.
Команда:
Проверка заголовка
Проверка таблиц
Проверка объектов, проход 1
Проход 1: проверено объектов: 2556700
Проверка объектов, проход 2
Проход 2: проверено объектов: 2556700
Проверка блоков
Проверено блоков: 94
Проверка AcDsRecords
Всего найдено ошибок: 0, исправлено: 0
Стерто 0 объектов
В текущем наборе объектов в пр-ве листа: 7536741; в пр-ве модели: 7077993
Команда: nil
Команды _.explodeallproxy и _.removeallproxy - это из комплекса RemoveAllProxy от А.Ривилиса
P.S. По поводу очистки файла от мусора есть масса информации: Как уменьшить объем файла dwg.