Тестирование производительности разных версий 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"?
Во-вторых, предоставляя файлы, не помешает их чистить от мусора, которого там весьма приличное количество - вплоть до объектов нулевой длины!
В-третьих, про понятие "недоступных шрифтов", похоже, авторы не подозревают. Убил бы!
В-четвертых, и в самых главных: разрабатывая код, не помешает его тестировать потщательнее. Мне было лень воевать и полностью переписывать коды, поэтому я сделал следующее:

  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
01_opentimer
Pan
02_pan
SelectAll
03_select
Move
04_move
Regen
05_regen
Zoom
06_zoom
Scale
07_scale
Audit
08_audit
Rotate
09_rotate
Mirror
10_mirror
Full
11_full

Файл с результатами тестов лежит здесь: 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, в котором сделаны некоторые дополнения (в том числе и лишние)

Размещено в AutoCAD, Autodesk, Новости · Метки:



Комментарии

Есть 16 коммент. к “Тестирование производительности разных версий ACAD”
  1. Андрей пишет:

    Лёша, интересно было бы почитать о тестовых платформах (Unit Testing Framework), которые можно использовать для тестирования LISP приложений в AutoCAD. Есть какая-то информация на эту тему?

  2. Кулик Алексей aka kpblc пишет:

    У меня по крайней мере нет. Если честно, у меня lisp-тестирование (с точки зрения нормального разработчика) поставлено из рук вон плохо: все тестирование выполняется вручную (программистом при написании кода + специально выделенным человеком).
    Может быть, это связано с некоторой "обособленностью" лиспа от нормальных языков программирования, может быть - с моей ленью. Не знаю.

  3. Павел пишет:

    Здравствуйте!
    А есть ли какая-нибудь информация по ускорению работы в Автокад с 3д на профессиональных видеокартах Nvidia Quadro и FirePro? Что планируется в будущем, или наоборот от чего уходим..?
    Даст ли существенный прирост покупка профессиональной видеокарты по сравнению с геймерской при равной цене?
    Будет ли толк от профессиональной видеокарты за 5-10т.р, по сравнению с геймерской за 15-20?

  4. Кулик Алексей aka kpblc пишет:

    Я бы прежде всего проверял видеокарту на соответствие списку официально рекомендованных (на сайте Autodesk такой список есть).
    А так - лично у меня подобной информации нет.

  5. Андрей пишет:

    У меня была когда-то Quadro от NVidia (не топовая, но и не самая дешёвая). Из того, что бросилось в глаза: применительно к играм она была мягко говоря, на дохлую троечку. Аналогичная по цене игровая (так же от NVidia) ни в какое сравнение не шла. Применительно к AutoCAD я разницы не заметил между Quadro и игровой. Я брал Quadro для того, чтобы поковыряться с технологией CUDA. Но эту технологию сейчас уже поддерживают почти все (или просто все) современные видеокарты от NVIDIA, в т.ч. и игровые.

    В наше время во многих серьёзных магазинах видеокарты можно брать на время (с предоплатой) для того, чтобы попробовать их. Я так помнится выбирал между Radeon и NVidia когда-то. Правда я не знаю магазинов, где аналогично на "потестить" можно взять современную Quadro.

    Quadro стоит сумасшедших денег и покупать её основываясь лишь на рекламе сайта NVidia - это дорогой кот в мешке.

  6. Андрей пишет:

    >Я бы прежде всего проверял видеокарту на соответствие списку официально рекомендованных (на сайте Autodesk такой список есть).
    Я бы не стал 100% полагаться на это. Автодеск нередко на заборе пишет надписи, за содержимое которых не отвечает (многократно проверено на практике).

  7. Артем пишет:

    Добрый день!
    Подскажите пожалуйста, работает ли тест (лисп) в AutoCAD 2013?
    Также.
    В Лисп timer
    ;;Для добавления/удаления операции добавить/удалить ; перед соответствующей функцией
    (defun full (/ start_time end_time func_time full_time)

    Куда нужно добавить ?
    Заранее вам благодарен за ответ

  8. Кулик Алексей aka kpblc пишет:

    Доброго. По идее должен (но я не проверял). Касаемо "добавления" - а какой результат надо получить?

  9. Артем пишет:

    Результат - повторить за вами тест.

  10. Кулик Алексей aka kpblc пишет:

    Так попробуйте запустить timer_modified.lsp - там код уже подготовлен к использованию.

  11. Артем пишет:

    Доброе утро!
    Запустил timer_modified.lsp выдает ошибку: Обнаружены ошибки программы. Рекомендуется сохранить чертеж и перезапустить программу."

  12. Кулик Алексей aka kpblc пишет:

    Какую именно функцию / команду запускали? Я только что специально повторно скачал архив - подобное сообщение не получил.
    AutoCAD2016. Открывались test_*_ACAD.dwg-файлы из архива. Запуск команды totp, функции full (без редактирования).
    Обычно подобное сообщение выводится только при попытке восстановления какого-либо поврежденного файла.

  13. Артем пишет:

    Открываю в AutoCAD 2013.
    Открываю файл.
    Загрузил lisp.
    Затем запускаю команду totp/
    И говорит Обнаружены ошибки программы. Рекомендуется сохранить чертеж и перезапустить программу.”

    Подскажите пожалуйста функции full (без редактирования) это что такое?
    Может дело в AutoCAD 2013.

  14. Кулик Алексей aka kpblc пишет:

    Значит, в файле присутствуют ошибки. После выполнения очистки - сохранить файл. В 90% случаев перезапуск AutoCAD не требуется, но я бы перезапустил AutoCAD и снова открыл этот файл dwg.
    >> full (без редактирования)
    Это значит, что в код не вносились никакие изменения. Прямо как есть, так и запускается:

    1
    (full)
  15. Артем пишет:

    Команда: _explodeallproxy Неизвестная команда "EXPLODEALLPROXY". Для вызова справки нажмите F1.
    Команда: _removeallproxy Неизвестная команда "REMOVEALLPROXY". Для вызова справки нажмите F1.
    Команда:
    Проверка заголовка
    Проверка таблиц
    Проверка объектов, проход 1
    Проход 1: проверено объектов: 2556700
    Проверка объектов, проход 2
    Проход 2: проверено объектов: 2556700
    Проверка блоков
    Проверено блоков: 94
    Проверка AcDsRecords
    Всего найдено ошибок: 0, исправлено: 0
    Стерто 0 объектов
    В текущем наборе объектов в пр-ве листа: 7536741; в пр-ве модели: 7077993
    Команда: nil

  16. Кулик Алексей aka kpblc пишет:

    Команды _.explodeallproxy и _.removeallproxy - это из комплекса RemoveAllProxy от А.Ривилиса
    P.S. По поводу очистки файла от мусора есть масса информации: Как уменьшить объем файла dwg.

Поделитесь своим мнением


Я не робот.