Показано с 1 по 10 из 32

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    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хх?
    Не понял, к кому этот вопрос, но на всякий случай отвечу - не знаю.

  2. #2

    По умолчанию

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

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

    По умолчанию

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

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

    По умолчанию

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

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

Ваши права

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