Борис Гость
|
Добавлено: Чт Янв 16 2003 18:27 Заголовок сообщения: Re: Оптимизация скорости доступа к эл. массива |
|
|
Возможно (только предположение!), потому, что в VC/C++ доступ к элементам массива -- это функция operator[](тип*, int), которая (опять только предположение!) выполняется так:
тип operator[](тип* аргумент1, int аргумент2) { return *(аргумент1+sizeof(тип)*аргумент2) }
то есть при каждом обращении к элементу массива происходит умножение, суммирование и разыменование.
Быстрее будет использование простое разыменование указателя.
В качестве примера -- сканирование ASCIIZ-строки (однократные операции при инициализации не подсчитываю).
Получение значения элемента в форме массив[индекс] for(индекс=0;массив[индекс]!=NULL;индекс++);
Выполняемые операции: умножение, суммирование, разыменование, сравнение, прирост индекса.
Получение значения элемента в форме *указатель указатель=&нулевой_элемент; while(*указатель++! =NULL);
Выполняемые операции: разыменование, сравнение, прирост указателя.
Скорость операций прирост индекса и прирост указателя одинакова. Разница: умножение, суммирование в случае массив[индекс]. |
|