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

07/04/2015

Тестирование производительности разных версий ACAD

Попалась мне тут на глаза очередная статья по сравнению быстродействия разных CADов. Подумал, что будет небезынтересно сравнить производительность разных версий AutoCAD. Чтобы не "порушить" боевое железо, использую виртуальную машину.

Характеристики виртуального PC

OC Microsoft Windows 7 Pro x64
RAM 4 Gb
Доступ к интернет-ресурсам закрыт на физическом компе (соответственно и на виртуальном PC тоже). Файл виртуальной машины расположен на локальном диске физического компьютера (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. Пакеты распакованы в каталог

C:\Autodesk\TestPack

C:\Autodesk\TestPack\LispBenchMarks

В каждый AutoCAD в пути поиска добавляется эти каталоги. Все функции запускаются из консоли VLIDE. Виртуальная машина не деактивируется.

Прежде чем продолжать, хочу сказать пару ласковых авторам тестов...

Во-первых, раз уж тестируется AutoCAD, кто мешает сформировать файлы так, чтобы они при открытии не орали ни о том, что "Файл сделан в приложении, не лицензированном Autodesk"?
Во-вторых, предоставляя файлы, не помешает их чистить от мусора, которого там весьма приличное количество - вплоть до объектов нулевой длины!
В-третьих, про понятие "недоступных шрифтов", похоже, авторы не подозревают. Убил бы!
В-четвертых, и в самых главных: разрабатывая код, не помешает его тестировать потщательнее. Мне было лень воевать и полностью переписывать коды, поэтому я сделал следующее:
  1. Добавил обработку всех системных переменных
  2. Вызов каждой функции из (full) обрамил в свой vla-startundomark и vla-endundomark. Отсутствие подобных кусочков может привести (и нередко приводит) к дикому объему файлов отмены
  3. Опять же, из-за собственной паранойи я добавил обработку ошибок
  4. И, наконец, я убрал функции проверки скорости удаления и восстановления примитивов: срабатывали они не всегда корректно. Разбираться с причинами не было никакого желания. Код не оптимизировался никаким манером - хотя и следовало бы

Тестирование проходило только на функции (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%
На случай, если смотреть на таблицу скучно, ниже приведены диаграммы на каждую функцию (картинки кликабельны).
OpenTimer
Pan
Select
Move
Regen
Zoom
Scale
Audit
Rotate
Mirror
Full
Файл с результатами тестов лежит здесь: CADSpeedTestResults (формат архива - zip; формат файла -xlsx)
Подводя некоторые итоги, можно сказать следующее: 2016 в реальной жизни, скорее всего, будет интереснее 2014 и 2015: достаточно вспомнить о том, что аппаратное ускорение для 2014 и 2015 на виртуальном компьютере включалось, а для 2016 - нет; а также некоторую искусственность тестов (ну, тут уже никуда не денешься).

Критичными для 2016 могут выглядеть задачи выбора объектов на тяжелых файлах; регенерации при наличии слабой или несертифицированной видеокарты; зеркалирования растров (если они вставлены как OLE-объекты). Возможно, в дальнейшем эти вопросы будут решены - не знаю.

P.S. Если бы мне было не лень, я бы попробовал переписать тесты. Но мне лень ;)
Исходные файлы тестов (dwg и lsp) предоставлю чуть позже.

Автор: Алексей Кулик

Добавлено:

Здесь лежит архив с тестовыми файлами (216 Мб, учтите!). Содержимое:

readme.txt - штатное описание теста

test_?.dwg - файлы тестов

*ACAD.dwg - те же файлы, но прошедшие очистку в AutoCAD (в том числе и _.wblock). Настройки текстовых стилей и вычищение типов линий не производилось

timer.lsp - штатный тестовый lisp

timer_modified.lsp - модифицированный lisp, в котором сделаны некоторые дополнения (в том числе и лишние)

Обсуждение: http://adn-cis.org/forum/index.php?topic=2612

Опубликовано 07.04.2015
Отредактировано 03.09.2015 в 12:03:35