Сообщение от
VitSSSSS
А такой вариант:
...
VAR
...
source: ARRAY [0..MAX_ELEMENT] OF BYTE := 8, MAX_ELEMENT(8);
destination: ARRAY [0..MAX_ELEMENT] OF BYTE;
sourcePtr: POINTER TO ARRAY [0..MAX_ELEMENT] OF BYTE;
...
END_VAR
Код:
...
2: sourcePtr:= ADR(source);
destination:= sourcePtr^;
...
у меня на компе это за 32ms, а с SysMemLib за 125ms.
?
Этот вариант я исключил из рассмотрения сразу, т.к. размер копируемого блока данных задается в момент компиляции не может быть изменен в процесс выполнения программы. Это, мягко говоря, не удобно.
Но я его протестировал.
Код №4. Используется указатель на массив.
Время выполнения 78 мс.
Код:
sourcePtr2: POINTER TO ARRAY [0..MAX_ELEMENT] OF BYTE;
FOR j:= 1 TO ITERATIONS_NUMBER DO
sourcePtr2:= ADR(source);
destination:= sourcePtr2^;
END_FOR
Время выполнения точно такое же, как и в варианте с SysMemLib. Подозрительно . Похоже в этом варианте скрытно вызывается функция sysMemMove(). А результат 32 мс вы получили, потому что выполняли копирование 1 раз, а не в цикле .
Сообщение от
Игорь Петров
Будут наказаны за вранье. Кстати, с какого языка они переводили описание ПЛК1хх?
Не понял, к кому этот вопрос, но на всякий случай отвечу - не знаю.