Скорость обработки, как функция места переменной?

Захват, обработка и генерирование сигнала

Скорость обработки, как функция места переменной?

Postby ESeid on 11 Jun 2017, 21:24

Создаем рекурсивный алгоритм обработки сигнала, очень важный параметр - скорость обработки. На входе - массив, соответствующий стандартному видеокадру.
Заметил эффект, коему нигде не увидел описания: скорость обработки цикла зависит от места положения переменных в нем. Для проверки написал простенький алгоритм, вычисляющий почленную разницу двух массивов. Проверил в трех состояниях: 1. - обе переменные вне цикла, 2 - одна переменная внутри цикла, 3 - обе переменные внутри цикла. Скорость исполнения вычисляется, как время исполнения, деленная на количество циклов. Результат говорит сам за себя:
1. - 6360 циклов/сек.
2. - 1533 циклов/сек.
3. - 620 циклов/сек.
Господа знатоки! У кого-нибудь есть обьяснения этому странному падению скорости? И как с этим бороться?
Сам VI и фото всех трех состояний прилагаю.
Attachments
SpeedTest.vi
(16.74 KiB) Downloaded 31 times
SpeedTest BD.png
ESeid
assistant
assistant
 
Posts: 146
Joined: 30 Mar 2011, 22:41
Medals: 1
Автор (1)
LabVIEW Version: 8.2-2013
Karma: 34

Re: Скорость обработки, как функция места переменной?

Postby Kosist on 11 Jun 2017, 21:46

Я, может быть, и ошибаюсь, но объяснение, кажется, простое:
1. На входе в цикл создаются копии данных с контролов, в память. На каждой итерации происходит считывание не с локальных переменных, а с памяти - что довольно быстро.
2. В каждой итерации происходит считывание с локальной переменной - :labview: копирует данные с контрола (при этом нет переключения в user interface thread), а затем копирует их в буфер обмена данных.
3. Происходит считывание с двух локальных переменных каждую итерацию цикла.
Вот здесь - http://www.labviewcraftsmen.com/blog/ge ... s-by-index - интересно расписано, как :labview: записывает данные в контрол. Думаю, что считывание будет выполнятся в обратном порядке.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 782
Joined: 21 Feb 2011, 23:44
Location: СумГУ
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 236
CLAD I/O VIP students

Re: Скорость обработки, как функция места переменной?

Postby dadreamer on 11 Jun 2017, 22:17

Ну да, тут особо добавить нечего.
1. Операция однократного копирования из транспортного буфера в ячейку памяти перед циклом. Дальше цикл на каждой итерации читает эту ячейку.
2 и 3. Операция многократного копирования - выполняется каждую итерацию. В 2 для одной переменной, в 3 для обеих.

Хотя это здесь не принципиально, но легко видеть, что в 1 используются фиксированные значения переменных, тогда как в 3 используются текущие значения. Это может быть важно в некоторых архитектурах (возможность поменять значения переменных "на лету").

ЗЫ: инициализацию переменных и Request Deallocation (смысл его использования?) надо привязать к рамке кейса, чтобы явно задать поток данных.
User avatar
dadreamer
doctor
doctor
 
Posts: 2895
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

Re: Скорость обработки, как функция места переменной?

Postby ESeid on 12 Jun 2017, 15:42

Kosist, dadreamer, огромное спасибо за консультацию! Начал понимать, где собака порылась. ;)
dadreamer, Request Deallocation я поставил по инерции - я ее всегда ставлю. Рефлексы. ;)
ESeid
assistant
assistant
 
Posts: 146
Joined: 30 Mar 2011, 22:41
Medals: 1
Автор (1)
LabVIEW Version: 8.2-2013
Karma: 34

Re: Скорость обработки, как функция места переменной?

Postby dadreamer on 12 Jun 2017, 15:56

ESeid wrote:dadreamer, Request Deallocation я поставил по инерции - я ее всегда ставлю. Рефлексы. ;)

И как, помогает? :wink:
User avatar
dadreamer
doctor
doctor
 
Posts: 2895
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2017
Karma: 708
I/O VIP vision internet

Re: Скорость обработки, как функция места переменной?

Postby ESeid on 12 Jun 2017, 17:51

dadreamer wrote:И как, помогает? :wink:

- Ребе, как мне вернуть мужа от любовницы?
- Сара, возьми немножко волос с расчески мужа, заверни в бумажку с молитвой, которую я тебе напишу, и зарой безлунной ночью под порогом дома разлучницы.
- Ребе, и это поможет?
- Не помешает... ;)
ESeid
assistant
assistant
 
Posts: 146
Joined: 30 Mar 2011, 22:41
Medals: 1
Автор (1)
LabVIEW Version: 8.2-2013
Karma: 34


Return to Обработка сигнала

Who is online

Users browsing this forum: No registered users and 5 guests

cron