Интересное наблюдение.

 

Работаю над зацикленной программой. Одним из требований является экономный код, а количественным показателем - количество итераций в секунду. Любая логическая ошибка приводит к снижению колич. итераций. Для возможности постоянного контроля я сделал небольшую функцию - эдакий графический индикатор. Точка показывает моментальное изменение количества итераций (обновляется каждые 0.5 сек), а крестик - среднее значение за последние 10 сек.

Обычно этот показометр показывает 400-450 итераций. А сегодня утром - как бы ни с того ни с сего - всего 60. Это меня немало озадачило, т.к. последние изменения вносились в программу накануне вечером и всё было нормально. Анализ кода никаких результатов не дал. Однако, когда я включил Skype, показометр резко подскочил до обычных значений. Для полноты эксперимента я переписал функцию показометра в виде отдельной программы. И стал запускать при работающем Скайпе и при неработающем. Оказалось, что явление устойчивое.

На первой из приведенных картинок Скайп работает. Показометр показывает чуть меньше 500 итераций в сек (нормальное значение).
На второй картинке Скайп отключён. Точка моментально ушла на 60-70. Снимок сделан в момент, когда крестик "тянется" к точке, через несколько секунд он туда пришёл.

Если бы посторонняя программа тормозила МТ, это было бы понятнее, а в данном случае - наоборот.
Всем, кому это интересно, предлагаю повторить эксперимент на Вашем ПК, в сочетании со Скайпом и другими программами.

 
Здравствуйте SK!
Забавная, однако, приблуда! Должно быть и вправду очень полезная.
Только не совсем понятна проблема, отсюда и как пользоваться кодом.
Я правильно понял:
Исследуемый код надо поместить внутрь цикла?
И если в ходе его работы будут возникать логические ошибки, то резкое падение кол-ва итераций?
А в каких ситуациях эти ошибки возможны?(просто я не писал еще достатоточно больших и сложных программ).
С уважением,
Владимир

P.S. У меня вот 50-60 все время кажет?
 
VBAG:
Здравствуйте SK!
Забавная, однако, приблуда! Должно быть и вправду очень полезная.
Только не совсем понятна проблема, отсюда и как пользоваться кодом.
Я правильно понял:
Исследуемый код надо поместить внутрь цикла?
И если в ходе его работы будут возникать логические ошибки, то резкое падение кол-ва итераций?
А в каких ситуациях эти ошибки возможны?(просто я не писал еще достатоточно больших и сложных программ).
С уважением,
Владимир


В общем-то, правильно, но наоборот. В исследуемый зацикленный код нужно поместить эту приблуду (но без цикла внутри, конечно).

Я оформил представленный код в виде функции и запускаю её в конце каждого большого цикла большой программы. А здесь, на форуме, нет необходимости приводить весь код, поэтому здесь представлен упрощённый вариант, в виде эксперта, который ничего не вычисляет, а только то и делает, что считает итерации. Можно запускать и как скрипт.

В моём коде критичным является время, затрачиваемое на перерисовку экрана (для моментального отображения граф. объектов в изменённых координатах), поэтому возникает опасность вставить перерисовку куда не попадя, тогда колич. итераций падает и я вижу, что пошла ошибка. Другим пользователям будет интересно посмотреть как ведёт себя показометр при перекл. ТФ, при том или ином количестве открытых фин. инструментов, а также при простом движении мыши.

Кстати, когда пошли котировки, проблема со Скайпом ушла. Видимо, это явление можно наблюдать только в выходные, когда нет котировок. Сейчас стабильно держится 400-420.

 
SK. писал (а):


В общем-то, правильно, но наоборот. В исследуемый зацикленный код нужно поместить эту приблуду (но без цикла внутри, конечно).

Спасибо, разобрался, все уже понятненько!
Мне, пока навряд ли понадобится, но инструмент хороший и под рукой всегда должен быть.
С уважением,
Владимир
 
SK. писал (а):

Кстати, когда пошли котировки, проблема со Скайпом ушла. Видимо, это явление можно наблюдать только в выходные, когда нет котировок. Сейчас стабильно держится 400-420.

Насколько я понимаю, все-таки это проблема (если проблема) не со Скайпом. :-) Даже если явление исчезло когда пошли котировки, то все равно его наличие означает, что где-то что-то не так. Или что мы чего-то не знаем и потому что-то не так делаем. У меня Скайпа нет, поэтому поучаствовать в эксперименте не могу, однако, когда-то давно я обратил внимание, что при торможении в работе МТ запуск других программ, активно использующих Интернет, как бы проталкивает затор. Подчеркну - это было мое устойчивое ощущение, не факт. А доказать это на цифрах руки не дошли.

Интересно, эта ваша зацикленная программа оформлена как эксперт или как скрипт ?

 
Yurixx:

Интересно, эта ваша зацикленная программа оформлена как эксперт или как скрипт ?


Как эксперт. Полноценный - с возможностью тестирования, перекл. ТФ, настройками и пр. Прообраз можно посмотреть на моём сайте.
 
SK. писал (а):
Yurixx:

Интересно, эта ваша зацикленная программа оформлена как эксперт или как скрипт ?


Как эксперт. Полноценный - с возможностью тестирования, перекл. ТФ, настройками и пр. Прообраз можно посмотреть на моём сайте.

Может быть попробовать запустить его как скрипт, благо переделка элементарна. Смысл - если тормозить перестанет, то надо полагать проблема во взаимодействии терминала с тиковым потоком. То есть или что-то там не так работает, или мы чего-то важного об этом процессе не знаем.
 
Можно запустить и как скрипт. Для этого ничего переделывать не надо. Чего-то мы не знаем, это точно.
Причина обращения: