Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 32

Тема: Работа с массивами

  1. #21

    По умолчанию

    Цитата Сообщение от Serge_UA Посмотреть сообщение
    Это не я попутал, это переводчики пролога попутали
    Будут наказаны за вранье. Кстати, с какого языка они переводили описание ПЛК1хх?

  2. #22

    По умолчанию

    Цитата Сообщение от Serge_UA Посмотреть сообщение
    Мой тест ...
    ...
    Комментарии и критика "чистоты эксперимента" приветствуются.
    А такой вариант:
    ...
    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.
    ?

  3. #23
    Пользователь
    Регистрация
    10.05.2011
    Адрес
    Харьков
    Сообщений
    21

    По умолчанию

    Цитата Сообщение от 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хх?
    Не понял, к кому этот вопрос, но на всякий случай отвечу - не знаю.

  4. #24
    Пользователь
    Регистрация
    10.05.2011
    Адрес
    Харьков
    Сообщений
    21

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    На Яве когда я провожу отладку кода, время выполнения значительно увеличивается, при отображении значений каждой итерации, в КДС скорее всего тоже самое, вполне возможно что откомпилированный код выполняется одинаково как я раньше и говорил, но если смотреть, то все подобные функции не включающие в себя прямым образом цикл, выполняются быстрее, потому что при циклах КДС как семафор "тормозит" выполнение программы
    Возможно. Хотя сомневаюсь. На досуге попробую сделать тест с отключенным от PLCWinNT CodeSyS.

    П.С. Что такое Ява? Симулятор написан на java? Не заметил, чтобы устанавливалась java-runtime при установке CodeSys.

  5. #25

    По умолчанию

    Цитата Сообщение от Serge_UA Посмотреть сообщение
    Не понял, к кому этот вопрос, но на всякий случай отвечу - не знаю.
    Увидев Ваше обвинение ‘переводчики Пролога напутали’ я хотел лишить виновного отпускных. Но, следствие доказало что совершенно напрасно. Пожалуйста, пишите ‘не знаю кто напутал’ если не знаете или не уверены.

  6. #26
    Пользователь
    Регистрация
    10.05.2011
    Адрес
    Харьков
    Сообщений
    21

    По умолчанию

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Увидев Ваше обвинение ‘переводчики Пролога напутали’ я хотел лишить виновного отпускных. Но, следствие доказало что совершенно напрасно. Пожалуйста, пишите ‘не знаю кто напутал’ если не знаете или не уверены.
    Я категорически против лишения кого-либо отпускных. "Обвинил" я исходя из цитаты приведенной Логвиненко Андреем. Я полагал, что она из официального источника . Тысяча извинений переводчикам Пролога.

  7. #27
    Пользователь
    Регистрация
    10.05.2011
    Адрес
    Харьков
    Сообщений
    21

    По умолчанию

    Чтобы закончить следствие, нужно спросить у Логвиненко Андрея откуда скопирована его цитата.

  8. #28

    По умолчанию

    Не думал, что из-за этого может подняться такой спор, цитата взята отсюда:
    "Порядок программирования контроллеров семейства ПЛК1хх (ПЛК100, ПЛК150, ПЛК154, ПЛК110)" стр. 9 с диска ПЛК версия 8.12.

  9. #29

    По умолчанию

    Подскажите п-та "чайнику".
    Имею массив chan:ARRAY[1..4,1..4] OF WORD, пытаюсь обратиться к элементу массива по индексам содержащимся в переменных row:INT и line:INT, но выражение chan[row,line] выдает ошибку.
    Где я ошибаюсь?

  10. #30
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    Цитата Сообщение от ВениаминШ Посмотреть сообщение
    Подскажите п-та "чайнику".
    Имею массив chan:ARRAY[1..4,1..4] OF WORD, пытаюсь обратиться к элементу массива по индексам содержащимся в переменных row:INT и line:INT, но выражение chan[row,line] выдает ошибку.
    Где я ошибаюсь?
    какого вида ошибка мы догадываться должны? Может Вы там нулями всё обложили
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •