Тестирование производительности разных версий ACAD
Попалась мне тут на глаза очередная статья по сравнению быстродействия разных CADов. Подумал, что будет небезынтересно сравнить производительность разных версий AutoCAD. Чтобы не "порушить" боевое железо, использую виртуальную машину.
Характеристики виртуального PC
OC | Microsoft Windows 7 Pro x64 |
RAM | 4 Gb |
Проверяем работу 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\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% |
OpenTimer | |
Pan | |
Select | |
Move | |
Regen | |
Zoom | |
Scale | |
Audit | |
Rotate | |
Mirror | |
Full |
Подводя некоторые итоги, можно сказать следующее: 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 в 11:03:35