C++ осень 2013 лекция 2

43 %
57 %
Information about C++ осень 2013 лекция 2
Education

Published on February 21, 2014

Author: Technopark

Source: slideshare.net

Углубленное программирование на языке C++ Алексей Петров

Лекция №2. Дополнительные вопросы организации и использования памяти в программах на языке C 1. Многомерные массивы. 2. Выравнивание и упаковка переменных составных типов. 3. Системные аспекты выделения и освобождения памяти. 4. Взаимодействие с операционной системой. 5. Оптимизация работы с кэш-памятью ЦП ЭВМ. 6. Постановка индивидуальных задач к практикуму №2. 2

Многомерные массивы  Двумерный массив — объект данных T a[N][M], который:  содержит N последовательно расположенных в памяти строк по M элементов типа T в каждой;  в общем и целом инициализируется аналогично одномерным массивам;  по характеристикам выравнивания идентичен объекту T a[N * M], что сводит его двумерный характер к удобному умозрительному приему, упрощающему обсуждение и визуализацию порядка размещения данных.  Массивы размерности больше двух считаются многомерными, при этом (N + 1)-мерные массивы индуктивно определяются как линеаризованные массивы N-мерных массивов, для которых справедливо все сказанное об одно- и двумерных массивах. 3

Многомерные массивы: пример // определение двумерных массивов int a[2][3] = { {0, 1}, // частичная инициализация строки {2, 3, 4}}; // полная инициализация строки int b[2][3] = {0, 1, 2, 3, 4}; // результаты: // a: {0, 1, 0, 2, 3, 4}; b: {0, 1, 2, 3, 4, 0} // определение массивов размерности больше 2 double d[3][5][10]; int32_t k[5][4][3][2]; 4

Эффективный обход двумерных массивов  Простейшим способом повышения эффективности работы с двумерным массивом является отказ от его обхода по столбцам в пользу обхода по строкам:  для массивов, объем которых превышает размер (выделенной процессу) кэш-памяти данных самого верхнего уровня (напр., L2d), время инициализации по строкам приблизительно втрое меньше времени инициализации по столбцам вне зависимости от того, ведется ли запись в кэш-память или в оперативную память в обход нее (У. Дреппер, 2007).  Дальнейшая оптимизация может быть связана с анализом и переработкой решаемой задачи в целях снижения частоты кэшпромахов или использования векторных инструкций процессора (SIMD — Single Instruction, Multiple Data). 5

Задача об умножении матриц (1 / 2)  Классическим примером задачи, требующей неэффективного, с точки зрения архитектуры ЭВМ, обхода массива по столбцам,

Add a comment

Related presentations

Related pages

C++ осень 2013 лекция 6 - Education

Web осень 2013 лекция 6 1. Работа с базой. Django ORMАлександр Бекбулатов 2. Где хранить данные ...
Read more

C++ осень 2013 лекция 2 - Education - documents.mx

C++ осень 2013 лекция 2 Jun 15 ... памяти в программах на языке C 1. Многомерные массивы. 2.
Read more

C++ осень 2013 лекция 7 - Education

Download C++ осень 2013 лекция 7. ... тип C реализует поддержку ... C++ осень 2013 лекция 2 ...
Read more

Android осень 2013 лекция 6 - Education

... (UserDictionary.Words.C ONTENT ... Java осень 2013 лекция 2 ... Тестирование осень 2013 лекция 4 1. &# ...
Read more

C++ осень 2013 лекция 1, SlideSearchEngine.com

C++ осень 2013 лекция 1 Education ... Лекция №2. ... в программах на языке C Практикум №2.
Read more

Разработка веб-сервисов осень 2013 лекция 12 - Education

Java осень 2013 лекция 2 1. ... Тестирование осень 2013 лекция 4 1. М ... Лекция 2. Objective-C
Read more

Home · bumshmyak/algocourse Wiki · GitHub

Задача c. Лекция 8 ... Лекция 2(20 сентября) Стек на ... Весна 2013 Осень 2012
Read more

Осень 2013: Статистика и язык R для биологов - YouTube

Осень 2013: ... Статистика для биологов (лекция, 14 сентября 2013) ... 2 ноября 2013)
Read more