Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа "Построение множества Мандельброта и его оптимизация"

Множество Мандельброта

Множество Мандельбро́та — это «множество таких точек C на комплексной плоскости, для которых рекуррентное соотношение $Z_{n+1} = Z_n^2 + C$ при $Z_0=0$ задаёт ограниченную последовательность».

Построение множества Мандельброта

Построение множества Мандельброта проволилось при помощи язака программирования C++ и графической библиотеки SFML.

Расчет FPS проводился этой же библиотекой, а именно через ее функцию getElapsedTime(), предназначенную для получения времени с момента последнего перезапуска. Сохранив в переменные время перед расчетом кадра и после него, будет получен период одного кадра. FPS расчитывается делением 1 на этот период.

Подсчет количества тиков на кадр проводится суммированием тиков, прошедших за расчет 16 или 256 кадров, и последующим делением этой суммы на соответствующее число кадров.

Полученные значения времени (в тиках процессора)

(средние значения за 16 кадров без флагов и за 256 кадров с -O2 и -O3)

С графикой

Режим Обычный режим For на 4 элемента Свои интринсики Встроенные интринсики
Без флагов 391621842 895920360 3042920762 300030294
С -O2 168992363 103296023 100301820 56609262
С -O3 169114531 88787239 88098360 56553560

Без графики (с заполнением точек)

Режим Обычный режим For на 4 элемента Свои интринсики Встроенные интринсики
Без флагов 390027994 888555635 2877353780 297691746
С -O2 168448596 102458958 98666247 54669292
С -O3 167842295 86582224 85949780 54594858

Без графики (без заполнения точек)

Режим Обычный режим For на 4 элемента Свои интринсики Встроенные интринсики
Без флагов 372128741 855150485 3003620767 280895816
С -O2 8134841 94408590 94121836 7463574
С -O3 7808804 7193911 80172485 7393769

Обсуждение результатов

Полученные данные показали, что при использовании циклов на 4 элемента без применения флагов оптимизации время отображения кадра значительно повышается, а при интринсиках лишь немного уменьшается. Но при использовании оптимизации компилятора скорость расчета при циклах в 2 раза больше и при интринсиках в 3 раза больше, чем скорость при обычном расчете.

Скорость расчета для цикла при флаге -O3 немного больше, чем с -O2, а при интринсиках она почти одинаковая.

Также видно, что наличие вывода готового изображения почти не повлияло на время работы программы, а отсутствие заполнения точек дало прирост скорости почти в 20 раз для обычного режима и около 10 для остальных, однако разница между режимами почти пропала. Это могло произойти из-за того, что в программе вычисления стали занимать лишь малую часть от времени выполнения, а оставшаяся частьу всех режимов одинаковая.

Вывод

Экспериментально показано, что добавление циклов на 4 элемента увеличит сложность программы будет неэффективно при отсутствии флагов оптимизации компилятора, но при их наличии этот метод даст прирост скорости вычисления в примерно 2 раза. Добавление интринсиков будет в обоих случаях эффективно, но с флагами оно будет значительно уменьшать время вычислений.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages