Зерно (Granularity)
Метаданные
Contents |
Введение
Зерно (Granularity) - термин, применяющийся сразу в нескольких областях информатики (в основном в компьютерной графике). В общем случае обозначает наименьший объем или наименьшее количество чего либо. В частности, зерном можно назвать кластер файловой системы.
Зернистость, применительно к массивам
Очень важно выбрать зерно массива в соответствии с ожидаемым характером его использования. Если зерно выбрать слишком маленьким, то при добавлении большого количества элементов в массив, память будет выделяться слишком часто. Это может сказаться на производительности. А если зерно выбрать слишком большим, то под новые элементы массива будет выделен объем памяти, который не будет использоваться полностью.
Пример
// Здесь зерно равно 10
CDesCArrayFlat* Array = new (ELeave) CDesCArrayFlat(10);
CleanupStack::PushL(Array);
Если вы создаете массив с зерном 10, то для хранения массива всегда будет выделяться объем памяти, кратный памяти, занимаемой 10 элементами массива. Т.е. даже если вы добавите один элемент, памяти будет выделено под десять элементов (90% выделенной памяти не будет использовано). Но при добавлении последующих 9 элементов память выделяться не будет, а элементы будут располагаться в уже выделенном объеме памяти. Это позволяет экономить время при добавлении элементов. Если в вашем массиве уже есть 10 элементов, и вы добавите еще один - то под массив будет выделена дополнительная память еще на 10 элементов.
Программы, выполняющихся на мобильных устройствах, часто сталкиваются с нехваткой памяти. Поэтому, выбор правильного зерна массива очень важен. Использование слишком большого значения приведет к напрасной трате памяти, а слишком маленького - к трате процессорного времени (время затрачиваемое на выделение памяти).


(no comments yet)