forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Скорость доступа к елементам массива и переменным (http://forum.boolean.name/showthread.php?t=11777)

dector 22.01.2010 22:00

Скорость доступа к елементам массива и переменным
 
Интересует вопрос:
Рознится ли скорость исполнения команд:
Код:

M[1][1]:=10;
и
Код:

N:=10;
?

И то, и то - ячейка в памяти. Но считаю, что вычисление адреса ячейки массива занимает время большее.
Фактически,
Код:

ADDR=MASSIVE_START+SIZE_OF_DATA_TYPE*(VECTOR_SIZE*VECTOR_COUNT+ELEMENT_NUM)

jimon 22.01.2010 22:11

Ответ: Скорость доступа к елементам массива и переменным
 
dector
в зависимости от компилятора, компиляторы C++, если возможно, подсчитают адрес во время компиляции и производительность будет такая же, другой вопрос где хранится эта переменная, локальные переменные в стеке хранятся, от этого тоже скорость будет зависеть

dector 22.01.2010 22:14

Ответ: Скорость доступа к елементам массива и переменным
 
Увы, компилятор - Borland Pascal.

Tronix 23.01.2010 14:02

Ответ: Скорость доступа к елементам массива и переменным
 
Цитата:

Сообщение от dector (Сообщение 134445)
Увы, компилятор - Borland Pascal.

В приведенном выше случае - одинаково:

PHP код:

Var
   
: Array [1..5,1..5of Integer;
   
Integer;
Begin
     asm
     nop
     nop
     nop
     end
;
     
M[1,1] := 10;
     
asm
     nop
     nop
     nop
     end
;
     
:= 10;
     
asm
     nop
     nop
     nop
     end


Код:

00000048: 90                          nop
 00000049: 90                          nop
 0000004A: 90                          nop
 0000004B: C70650000A00                mov      w,[00050],0000A ;" ◙"
 00000051: 90                          nop
 00000052: 90                          nop
 00000053: 90                          nop
 00000054: C70682000A00                mov      w,[00082],0000A ;" ◙"
 0000005A: 90                          nop
 0000005B: 90                          nop
 0000005C: 90                          nop

Но в целом, работа с массивами естественно медленнее, особенно когда индексы зависят от какой-то переменной (M[i],[j] := i, например).

dector 23.01.2010 15:43

Ответ: Скорость доступа к елементам массива и переменным
 
Все, спасибо. Теперь ясно :)


Часовой пояс GMT +4, время: 13:58.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot