[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте

Страницы: Пред. 1 2 3 4 5 6 След.
RSS
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
 
В ниже приведенном коде выделена строка символами ###, которая в QUIK 9.3.1.11 (QLua 5.4) выполняется в 16,25 раз дольше чем в QUIK 8.13.1.16 (QLua 5.4)
 Где поддержка??
Код
--- Загрузка CPU ---
IsRun = true
function main()
    local T
   local hour = 0, N
   N = 1000000
    -------------------
    while IsRun do 
       T = os.clock() 
      for i = 1, N do hour = {} end      
      T = (os.clock() -T) * 1000 / N     ---- ### !! Без подключения к серверу: 1) В QUIK 8.13.1.16 (QLua 5.4)  T = 0,00016 ;     
                                                                ---                                                         2) В QUIK 9.3.1.11 (QLua 5.4)  T = 0,0026  ??? (в 16,25 раз дольше)
      message (tostring(T))
        sleep(500)  
    end
    ------------------
end   
   
function OnStop()
     IsRun = false
    return 10000   
end
 
 
Имеется ввиду строка:        for i = 1, N do hour = {} end
 
TGB, Когда-то давно одного моего знакомого (крутейшего программиста) послали на курсы повышения квалификации. Мода такая была, хотя его квалификиция была намного выше, чем у любого из преподавателей. Дали задание: написать на С разложение в ряд Тейлора. Он и написал:
for(чего-то там);
то есть тело цикла у него получилось пустым. Препод посмотрел: "Я это решение проверять не буду"!

На месте техподдержки я бы то же самое сказал и о приведенном коде. Ну, выполняется эта хрень в 16,25 раз дольше чем в QUIK 8.13.1.16 - и чего? Самое разумное - отправить весь код на помойку, не читая.
 
Цитата
Владимир написал:
На месте техподдержки я бы то же самое сказал и о приведенном коде. Ну, выполняется эта хрень в 16,25 раз дольше чем в QUIK 8.13.1.16 - и чего? Самое разумное - отправить весь код на помойку, не читая.
  Я бы папуасам не рискнул объяснять, что такое тензорное исчисление, но у меня есть надежда, что поддержка не папуасы :smile:
----
 Вообще то, новые версии QLua у разработчика QUIK должны проходить хотя бы простейшие тесты.
  Например, без подключения к серверу:
1) проверка подключения пакетов;
2) проверка скорости выполнения циклических операций;
3) проверка работа таблиц:
-  скорости создания таблиц;
-  скорости доступа к элементов
И так далее ……
----
 Неужели этого у разработчика QUIK до сих пор нет таких тестов?
 
TGB, А какая разница, папуасы они или нет? Код Квика глючный до невозможности, работа с таблицами просто слёзы, и это медицинский факт. Нет у них никаких тестов - они им нафиг не нужны: все глюки оплачивает пользователь, а у них прямо противоположная задача: бесконечно выпускать всё новые и новые версии, имитируя бурную деятельность.. Код ПОКА ЕЩЁ позволяет вести торговлю, но, боюсь, вскоре перестанет это делать.
 
Цитата
Владимир написал:
Ну, выполняется эта хрень в 16,25 раз дольше чем в QUIK 8.13.1.16 - и чего?
  А того, что некоторые пользователи достаточно активно используют таблицы Lua (это относится и ко мне) и все, что связано с созданием таблиц, в QUIK 9.3.1.11 (QLua 5.4) выполняется в 16,25 раз дольше чем в QUIK 8.13.1.16 (QLua 5.4).  Это влезли в ваш ПК и снизили его производительность в 16 раз.
   Я не понял, что вы так заботитесь о том, чтобы разработчик QUIK не устранял глюки?
   Если у вас все хорошо, зачем вы мешаете другим пользователям решать свои (а может быть и ваши) проблемы?
 
Уважаемая техподдержка, с вашей стороны уже очень некрасиво выглядит долгая реакция на адекватные сообщения в этой теме.
 
TGB, Таблицы Lua и я очень активно использую (я думал, речь идёт о таблицах Квика), и НИ МАЛЕЙШИХ проблем с ними не имел. И если СОЗДАНИЕ таблиц вдруг замедлится в 16,25 раз, меня это НИСКОЛЬКО не обеспокоит. Доступ к ячейкам этих таблиц - другое дело, но это лечится нормальной организацией таблиц, а не запихиванием туда громадных массивов.

У меня дохленький ноут (даже не знаю, что там... ну да, два ядра, два гигагерца, два гигабайта), куплен специально для торговли, на нём постоянно крутятся два Квика от двух брокеров. Работает себе... ну, иногда Квики вылетают, как я писал выше. Но чтобы С ПРОИЗВОДИТЕЛЬНОСТЬЮ были какие проблемы...

Я забочусь о том, чтобы разработчик QUIK не ВНОСИЛ новые глюки! Не надо его провоцировать!
 
Цитата
Владимир написал:
И если СОЗДАНИЕ таблиц вдруг замедлится в 16,25 раз, меня это НИСКОЛЬКО не обеспокоит.
   Я понимаю, что вы "крутой" и вам от Qlua почти ничего не нужно. Но у меня есть друг, кстати, программист, торгующий довольно успешно вручную, а потому бесконечно круче вас  :smile:
 
TGB, ДА НИКОМУ от Qlua почти ничего не нужно! Просто нужно правильно ставить задачу, а не засирать процессор и память всякой фигнёй просто потому, что это МОЖНО сделать. Хотите честно? Я НЕ ВЕРЮ, что кто-либо использует больше входной информации, чем я (не объёмов данных, а именно информации для принятия решений). И у меня ОДНА таблица Lua на все эти дела! Ну, не считая нескольких служебных. Но в этой ОДНОЙ таблице есть ВСЕ нужные данные по ВСЕМ контролируемым скриптом тикерам! И времени на своё создание или чтение/редактирование данных из неё почти не требует. А данных там просто немеряно! Например, в ячейке в ячейке a[0][a[i][0][2]][0] находится текущее состояние кошелька пользователя (избыток/нехватка наличности) по валюте i-го тикера, в a[0][6][0] - размер стека заявок, в a[i][0][9] - ID строки i-го тикера в таблице визуализации, в ячейке a[i][1][1][j] - значение последней свечи i-го тикера по j-му таймфрейму, в ячейке a[i][4][j][a[i][1][4][j]-1] - цена самой дешёвой сделки i-го тикера по j-му таймфрейму, в a[i][3][j][0] - ID j-ой незакрытой заявки i-го тикера либо ID транзакции, если ID заявки ещё неизвестно). И т.д., и т.п. Таблица, повторяю, ОДНА! Проблем с производительностью, повторяю, НИКАКИХ! А тикеров у меня СОТНИ или даже ТЫСЯЧИ! Что, кто-то из местных "скулящих" обрабатывает больше? Ха-ха-ха!

Ваш друг, возможно, бесконечно круче меня как программист и/или как трейдер, но как алгоритмист я крутой, как варёное яйцо! :smile:  
 
QUIK clients support, будьте любезны, прокомментируйте, п.6. из Изменения в Рабочем месте QUIK 9.3.3:

Цитата
Исправленные недоработки
6. Медленная работа Рабочего места QUIK в некоторых случаях при запуске или во время работы

Имеет ли этот пункт отношение к обсуждаемой здесь теме?
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Имеет ли этот пункт отношение к обсуждаемой здесь теме?
  Тест комментария 55 в QUIK 9.3.3.3 (QLua 5.4) выполняется столько же как и в QUIK 8.13.1.16 (QLua 5.4)
 
Цитата
TGB написал:
Цитата
Старатель написал:
Имеет ли этот пункт отношение к обсуждаемой здесь теме?
   Тест комментария 55 в QUIK 9.3.3.3 (QLua 5.4) выполняется столько же как и в QUIK 8.13.1.16 (QLua 5.4)
Если производительность вернулась, то это хорошо. Значит представители "Арки" в курсе проблемы, но не сознались.

Вспоминается шутка про проприетарные форматы файлов. Их спецификации не раскрывают не потому, что там есть какие-то секретные ноу-хау, а потому, что стыдно.
 
Цитата
_sk_ написал:
Уважаемая техподдержка, с вашей стороны уже очень некрасиво выглядит долгая реакция на адекватные сообщения в этой теме.
Добрый день.

Да, действительно, в потоках обсуждения пропустили призывы прокомментировать ситуацию, за что приносим свои извинения. Сейчас посмотрим тему.
 
Поддерживаю тему по производительности - запущено несколько (до 10) скриптов однотипных, каждый скрипт отдельный инструмент - только переставлять заявки каждые 8 секунд, используя актуальные параметры по цене инструмента - периодически при запуске, остановке скриптов терминал зависает, все переменные локальные, в терминале всё по советам минимальное скачивание данных
 
КАТЕГОРИЧЕСКИ против любой модификации софта в угоду производительности! Надёжность падает, а любую производительность мгновенно загадят. Вон, пожалуйста "каждый скрипт отдельный инструмент", а несколько месяцев назад кто-то вообще бахвалился про "86 одновременно запущенных скриптов"!

Я дважды собирался обсудить здесь и довести до ума коды основных утилит для торговли (подача и снятие заявок, организация диалога и тому подобные "технические" моменты). Оба раза дело кончилось визгами и вонью, так что больше я этим делом заниматься не собираюсь. Просто говорю как профессионал: НИКАКИХ проблем с производительностью в Квике НЕТ! В понедельник с началом торгов я намерен опробовать новую версию своего скрипта, запуская её (без подачи заявок, только с её имитацией) параллельно с "боевым" скриптом, который ведёт реальную торговлю. Процессор у меня на 2 ядра, 2 ГБ ОЗУ, 2 ГГц, будут работать 2 Квика от разных брокеров, в каждом будет запущено по 2 скрипта (новый и старый). Обслуживать они будут в общей сложности около 4000 инструментов. И они прекрасно справятся с этой задачей! Говорю так уверенно потому, что в пятницу я отлаживал этот скрипт почти в том же режиме, только запускал его на одном из Квиков. Какое вам ещё быстродействие надобно?! Оставьте софт в покое, господа!
 
Владимир, "Вон, пожалуйста "каждый скрипт отдельный инструмент""

что не так, прям это является ужасной ошибкой?
сначала были скрипты что в себе несли несколько скриптов и снимали-выставляли заявки, начал искать как улучшить после ужасных тормозов - постоянно намертво зависал терминал, нашёл функцию смены заявки вместо снять-поставить, стало лучше, но всё равно терминал зависает, приходится перезагружать, перед этим удаляя файлы .dat в каталоге квика, как заменю несколько скриптом одним на все инструменты и проблема останется - у меня не останется идей что можно изменить ..
 
Цитата
boolean.rat написал:
Владимир, "Вон, пожалуйста "каждый скрипт отдельный инструмент""

что не так, прям это является ужасной ошибкой?
сначала были скрипты что в себе несли несколько скриптов и снимали-выставляли заявки, начал искать как улучшить после ужасных тормозов - постоянно намертво зависал терминал, нашёл функцию смены заявки вместо снять-поставить, стало лучше, но всё равно терминал зависает, приходится перезагружать, перед этим удаляя файлы .dat в каталоге квика, как заменю несколько скриптом одним на все инструменты и проблема останется - у меня не останется идей что можно изменить ..
 
случайно отправил предыдущее сообщение, удалять/редактировать нельзя?
в сообщение опечатка, не "были скрипты что в себе несли несколько скриптов", а "были скрипты с несколькими инструментами"
 
boolean.rat, Совершенно верно, "прям это является ужасной ошибкой". Жуткие тормоза и бесконечный кладезь самых разнообразных проблем, начиная с синхронизации.

Меня не интересует, что там "было сначала". Просто я терпеть не могу непрофессионализма, особенно воинствующего, как в этой ветке. Кстати, "смена заявки вместо снять-поставить" ничуть не быстрее, она всё равно реализована через "снять-поставить", только уже "внутре".

Вот и замените несколько скриптом одним на все инструменты и проблема исчезнет сама по себе.

Удалять/редактировать здесь нельзя. Маразм, конечно, но "такова селява".
 
Владимир, спасибо за ответ, первым делом исправлю указанную ошибку
по смене заявки через "MOVE_ORDERS" сразу 2-ух заявок, в противовес "KILL_ORDER", затем "NEW_ORDER" на каждую заявку, разумно предположить что быстрее .., в любом случае, дальнейший опыт покажет
 
boolean.rat, Но Вы же сами сказали, что положение улучшилось. Значит, вполне возможно, что Ваша реализация "KILL+NEW" просто менее эффективна, чем она же внутри найденной Вами функции "MOVE". А вот объединить скрипты "на каждый инструмент" в один "на все" просто настоятельно рекомендую!
 
Цитата
Владимир написал:
В понедельник с началом торгов я намерен опробовать новую версию своего скрипта, запуская её (без подачи заявок, только с её имитацией) параллельно с "боевым" скриптом, который ведёт реальную торговлю. Процессор у меня на 2 ядра, 2 ГБ ОЗУ, 2 ГГц, будут работать 2 Квика от разных брокеров, в каждом будет запущено по 2 скрипта (новый и старый). Обслуживать они будут в общей сложности около 4000 инструментов. И они прекрасно справятся с этой задачей!
Естественно что 4000 инструмента  в режиме реального времени   не проблемма  так как лично я будучи у тебя  в гостях  видел  как твой не самый мощный ноут и  в разы с большим количеством инструментов справлялся.   .

Но мне  более интересно сейчас другое . Хочется дождаться  выхода в свет  нового скрипта ,  вернее знаю что он уже есть  и важно теперь довести его  отладку .   Не буду спешить с поздравлениями  но удачи в запуске нового скрипта  в боевом режиме пожелаю.   По электронке чуть позднее допишу мои ответы и отправлю тебе их в  письме.
 
БорисД, Борь, ну я уже сегодня с утра опять успел "internal exeption" схлопотать! А в пятницу Квик опять вылетал по "unknown hard error"! При таких страшных глюках производительность CPU - это ПОСЛЕДНЕЕ, о чём должна голова болеть!

Запустил все 4, как грозился - пока всё работает. Но "соревнование устроить" пока не получаются: все затаились и ждут - ни одной сделки ни у одного из скриптов. Впрочем, рано ещё, торги толком не начались, подождём...

Да, но ведь и сложность выросла в разы! Причём как моими стараниями, так и твоими. Но всё-таки о наших с тобой делах давай лучше не здесь.
 
Владимир, спасибо за побуждение скорее перевести все инструменты в один скрипт + на всякий в один файл перенёс функции, что были в отдельной файле, добавлялись в скрип функцией "dofile"
первый запуск - выглядит быстро, больше нагружу чуть позже, если столкнусь с лагами, тема станет актуальной, пока норм и по производительности вопрос решён
рынок сегодня был клёвый и, кажись, не закончилось)
 
Владимир, понял - давай не здесь !
 
Цитата
Anton написал:
Сам стенд остался, но я не там, в ближайшие дни не смогу уточнить.
Уточнил, видел в 9.2 (а в 9.1 просто не смотрел). И уточнил, с какими аргументами lua_gc вызывается, вот с какими:
Код
int pcall_with_gc(lua_State * s, ...)
{
   if(some_variable != 0)
      lua_gc(s, LUA_GCSTOP);
   int result = lua_pcallk(s, ...));
   if(some_variable != 0)
      lua_gc(s, LUA_GCRESTART);
   return result;
}
Поменялось ли что-то в 9.3.3, не смотрел еще, по мере возможности гляну тоже.
 
Цитата
Anton написал:
Поменялось ли что-то в 9.3.3
Изменений в Lua не было: осталась библиотека версии 4.2.0.3
Значит, исправили какую-то другую проблему, не обсуждаемую здесь.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Anton написал:
И уточнил, с какими аргументами lua_gc вызывается, вот с какими
А можно на русский перевести? ))
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Демонстрационный скрипт:
    Скрытый текст        
Код
   local  n  =   50000 
 for  i  =   1 , n  do 
  _G[ "f"  .. i]  =   function  ()  end 
 end 

 local  class  =   "SPBFUT" 
 local  sec  =   "SiZ1" 
 local  param  =  {"BIDDEPTHT",  "OFFERDEPTHT" }

 local  run  =   true 
 function   OnStop ()
  run  =   nil 
 end 

 function   main ()
  assert( Subscribe_Level_II_Quotes (class, sec))
   for  i  =   1 ,  # param  do 
    ParamRequest(class, sec, param[i])
   end 
   while  run  do   sleep ( 500 )  end 
   Unsubscribe_Level_II_Quotes (class, sec)
   for  i  =   1 ,  # param  do 
    CancelParamRequest(class, sec, param[i])
   end 
 end 

 function   OnQuote (class_code, sec_code)  end 
 function   OnParam (class_code, sec_code)  end 
 function   OnAllTrade (alltrade)  end   

QUIK 9.3.1.11, Lua 5.4
Открыто, как минимум одно окно: стакан ликвидного инструмента.
Конечно, никто не запускает скрипты с тысячами функций, но при нескольких запущенных скриптах с десятками функций при высокой активности на бирже получаем нихилую загрузку CPU.

ЗЫ: У кого "один скрипт на все случаи жизни" с парой функций, может игнорировать эту тему.
Без флуда!

Здравствуйте!
Ваше письмо получено, проблема изучается. Постараемся в ближайшее время дать ответ.
 
LUA_GCSTOP: останавливает сборщик.
LUA_GCRESTART: перезапускает сборщик.

Идея запихать сборщик в каждый колбек - так себе. Понятное дело, в боевых условиях это никто не тестировал.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Изменений в Lua не было: осталась библиотека версии 4.2.0.3
Тут путаница какая-то. На стенде (где смотрел) длл от 9.2.0 с версией 4.1.2.2, на боевом стоит 9.2.3 с версией длл 4.1.3.1, в свежескачанном 9.3.3 длл 4.2.0.3. Что-то таки менялось.

Цитата
Старатель написал:
А можно на русский перевести?
Если некая переменная не ноль, перед вызовом колбека останавливается сборщик, после вызова - запускается. Что там за переменная мне неведомо, может она никогда не бывает установлена. В любом случае здесь шаг сборки не должен выполняться, стоп просто ставит флаг, что сборка отключена, рестарт его сбрасывает, оверхед минимальный. Но рестарт также сбрасывает в 0 переменную в стейте, которая следит за накоплением мусора, вот что будет на следующем шаге после этого, я сказать не могу, возможно, как раз полный цикл и произойдет.
 
Цитата
Anton написал:
путаница
А понял, к предыдущей версии не менялось.
 
Anton, Повесил я тут в своём скрипте на Escape "спящий режим" - таблица сворачивается в небольшую иконку и никакой выдачи туда не производится, только тикает чего-то по SetWindowCaption - типа, "работаем, а не висим". А по любому событию в этой таблице прорисовывается снова "нормальная". Так вот: несколько раз при этом выскакивало: "Вы уверены, что хотите удалить столбец"? Какой, в жопу, "столбец"?! Вся иконка состоит из одного столбца, а в том лишь один заголовок "Спящий режим" и больше нихрена нет! А пару раз при попытке выхода из спящего режима и вообще Квик вылетал по "internal error"! У меня просто фантазии не хватает, КАК можно изуродовать программу, чтобы она вытворяла ТАКОЕ! Вероятно, этот долбаный "чистильщик" чего-то там "начистил".

И ещё: сегодня меня перестало пускать на форум: Хром в ожидании, "да и нет не говорит", загрузка крутится... полчаса, час - она всё крутится. Зашёл через Оперу - пока пускает. Софт просто ППЦ! А народ загрузка CPU не устраивает, панимаш! :smile:  
 
Цитата
Владимир написал:
Так вот: несколько раз при этом выскакивало: "Вы уверены, что хотите удалить столбец"?
Попробуйте вытащить столбец из таблицы за заголовок, вылезет то же сообщение. Предположу, что в эти несколько раз мышка двигалась с зажатой кнопкой, под нее выскакивало окно скрипта и винда считала, что стартанул drag&drop столбца из таблицы. С падением тоже что-нибудь подобное, типа окно прибилось самопроизвольно, а потом на него событие приехало. Так что и без чистильщика широк простор убица на ровном месте.
 
Anton, Но я же не вытаскивал столбец из таблицы за заголовок! Тыщу раз кликал по заголовкам столбцов таблицы - никогда ничего подобного не было, просто строки сортировались по нему. Ну или в одном из видов контекстного меню у меня клик по столбцу перехватывается и меню переписывается уже с этим столбцом как с текущим. А, ну да - там ведь тоже порядок строк меняется перед перезаписью меню! То есть эта сволочь всё равно запускает и свой обработчик вместе с моим. Но у "спящего режима" даже строк нет, сортировать нечего! Может, поэтому у этого придурка крыша и едет, и всё заканчивается "internal error". Что, ещё и строчку ему завести, шоб было что сортировать?

Ну да, "и без чистильщика широк простор убица на ровном месте". Кстати, Хром так до сих пор на сайт зайти и не может. На другие сайты - пожалуйста, но здесь - табу! :smile:  
 
Цитата
Владимир написал:
Хром так до сих пор на сайт зайти и не может
Надо включать инструменты разработчика и глядеть, как тлс согласовывается, что там с заголовками и прочая, из головы трудно что-то предположить.
 
Anton, Да что там "предполагать" - ты же сам мой код интерпретируешь, ты же видишь, что это МОЁ событие, ты же знаешь, что я его перехватил и обработал! Какого хрена ты ещё и со своим обработчиком путаешься под ногами?!

Та же хрень по клику правой кнопкой: по нему у меня вызывается контекстное меню (единое в трёх лицах, в зависимости от того, по какой группе столбцов кликнуть), но и тут выскакивает это дурацкое "сортрировать?".

Вот же гнида! Опять один из Квиков выбила - "неизвестное исключение", панимаш! ВААПЩЕ ничего не делал, даже к компу не подходил! :evil:  
 
Цитата
Владимир написал:
ты же сам мой код интерпретируешь, ты же видишь, что это МОЁ событие, ты же знаешь, что я его перехватил и обработал
Луа для квика - черный ящик. Квик грузит скрипт тем же dofile, что и рядовой пользователь, прицепляет к нему свои функции и отпускает в свободное плавание. Единственное - помечает себе, какие колбеки скрипт определил, и при получении событий опять же через общедоступный интерфейс дергает эти колбеки. Байткод интерпретирует виртуальная машина луа, написанная не аркой. Слава богу, арка вроде не пытается ее ломать под каждое пожелание трудящихся, бо ничего кроме аццких глюков это не принесет, а досконально разобрать весь луа по косточкам и потом собрать франкенштейна такого же но без крыльев - в арке народу не хватит. В принципе, квик мог бы узнать, что там перехвачено и обработано, если бы, например, колбек оконного события возвращал true/false, а лучше какую-нибудь численную константу, чтобы вариантов было больше двух. А сейчас откуда ему знать, что колбек сотворил в ответ на событие, меню показал или еще что.

Цитата
Владимир написал:
"неизвестное исключение"
Табличка как в иконку превращается, чай, очищается в колбеке? Тогда засада:
 
 
Anton,
Цитата
Луа для квика - черный ящик.
Я и говорю: программисты вымерли. До знакомства с Квиком мне и в страшном сне не могло привидеться, что интерпретируемый код способен подвесить задачу.

Согласен, "слава богу, арка вроде не пытается ее ломать под каждое пожелание трудящихся, бо ничего кроме аццких глюков это не принесет".

В моих диалоговых задачах любой обработчик всегда сбрасывал обработанные им события, а остаток передавал следующему - никогда никаких проблем это не вызывало, даже если следующих обработчиков на момент передачи ещё не существовало. А здесь...  :cry:
Цитата
Табличка как в иконку превращается, чай, очищается в колбеке? Тогда засада:
Честно говоря, не помню. Подачу заявок я точно из коллбека выбросил, но это мало помогло... да, блин, именно там и сидит, зараза! Спасибо, попробую вынести. Кстати, именно там же и точно так же я лечу по Enter глюк "пропадание текста в ячейках", именно через DestroyTable с последующим AllocTable - уже несколько месяцев работает, как часы!  :smile:  
 
Цитата
Владимир написал:
Anton,  
Цитата
Луа для квика - черный ящик.
Я и говорю: программисты вымерли. До знакомства с Квиком мне и в страшном сне не могло привидеться, что интерпретируемый код способен подвесить задачу.

Согласен, "слава богу, арка вроде не пытается ее ломать под каждое пожелание трудящихся, бо ничего кроме аццких глюков это не принесет".

В моих диалоговых задачах любой обработчик всегда сбрасывал обработанные им события, а остаток передавал следующему - никогда никаких проблем это не вызывало, даже если следующих обработчиков на момент передачи ещё не существовало. А здесь...  
Цитата
Табличка как в иконку превращается, чай, очищается в колбеке? Тогда засада:
Честно говоря, не помню. Подачу заявок я точно из коллбека выбросил, но это мало помогло... да, блин, именно там и сидит, зараза! Спасибо, попробую вынести. Кстати, именно там же и точно так же я лечу по Enter глюк "пропадание текста в ячейках", именно через DestroyTable с последующим AllocTable - уже несколько месяцев работает, как часы!  ::  
Н-да, из таблицы получились часы, прикольно.
 
Anton, Сегодня, после нескольких часов работы, снова получил "неизвестное программное исключение". В "спящий режим не входил и вообще к компу не прикасался. Правда, на этот раз Квик остался в живых, "зато" этот ублюдок самопроизвольно сменил режим экрана, и я всё равно был вынужден перезагрузиться. На этот раз все три запущенных скрипта завершились корректно, через OnStop - ура, товарищи!

Коллапс! Абсолютный коллапс! Всё перестаёт работать! Абсолютно всё! И починить уже некому.  :cry:  
 
Цитата
Владимир написал:
этот ублюдок самопроизвольно сменил режим экрана
Там тупо такого кода не должно быть, это ж не игрушка с директиксом внутри. Как-то целенаправленно пытался создать больше объектов GDI, чем винда может переварить. Система тогда начинает экономить хэндлы и рисовать кое-как и чем придется, что выглядит похоже на слетевший видеорежим.
 
Anton, Так он и вылетать бы не должен, а час назад снова "неизвестное программное исключение", но на этот раз с убийством Квика и снова без малейших телодвижений с моей стороны.
 
Цитата
Владимир написал:
Anton, Так он и вылетать бы не должен, а час назад снова "неизвестное программное исключение", но на этот раз с убийством Квика и снова без малейших телодвижений с моей стороны.
Неизвестное программное исключение (0xe0434352)  - это ошибка, связанная с установкой .NET .
Большинство причин этой ошибки связаны с неисправностью .NET Framework ,
другая причина - в некоторых поврежденных файлах или старых драйверах ,
которые противоречат Windows .
---------------------------------  
Очевидно, что  Неизвестное программное исключение связано с попыткой выполнить за границами кода приложения .
В этом случае такое исключение не может быть опознано системой.  
 
еще советую (на всякий случай) проверить размеры свободной памяти и файла свопинга.
 
nikolz, Господи, .NET-то здесь при чём?! А файлы с драйверами каким боком? А размеры свободной памяти и/или файл свопинга? Да экономнее меня к памяти вообще не относится никто на этом форуме! Когда-то наша шахматная программа, прошитая в 16К ПЗУ (это и на программу, и на дебютный справочник, и на какую-то пародию на операционку!) с процессором 8086 и частотой 4.7 МГц официально выполнила норму КМС! И что, эта сраная задача организации торговли СЛОЖНЕЕ?! Какой только херни ни понапихают, а потом ещё удивляемся, что глючит! Да за одно только единожды выскочившее "неизвестное программное исключение" я бы тут же поувольнял к чертям собачьим всю эту шоблу так называемых "программеров"! А уж за регулярное появление, да ещё и с чередованием с "unknown hard error"!.. Верните на место самую старую версию, которая когда-то работала, что ли, И НЕ ПРИКАСАЙТЕСЬ БОЛЬШЕ К НЕЙ!!!
 
терминал зависает намертво периодически от выключения скрипта
ошибка в консоли
"06a0:err:ntdll:RtlpWaitForCriticalSection section 00000000090CF890 "?" wait timed out in thread 06a0, blocked by 0784, retrying (60 sec)"
 
Цитата
boolean.rat написал:
06a0:err:ntdll:RtlpWaitForCriticalSection section 00000000090CF890
предположу что у Вас произошла взаимная блокировка потоков ( скрипта и основного терминала )
Смотрите свой скрипт.  Хотя скорее всего это проблема разработчиков.  
 
Цитата
Daniil Pozdnyakov написал:
Цитата
Старатель написал:
Демонстрационный скрипт:
    Скрытый текст        
Код
      local   n   =     50000  
  for   i   =     1  , n   do  
  _G[  "f"    ..  i]   =     function   ()   end  
  end  

  local   class   =     "SPBFUT"  
  local   sec   =     "SiZ1"  
  local   param   =   {"BIDDEPTHT",  "OFFERDEPTHT" }

  local   run   =     true  
  function    OnStop ()
  run   =     nil  
  end  

  function    main ()
  assert(  Subscribe_Level_II_Quotes  (class, sec))
    for   i   =     1  ,   #  param   do  
    ParamRequest(class, sec, param[i])
    end  
    while   run   do     sleep  (  500  )   end  
    Unsubscribe_Level_II_Quotes  (class, sec)
    for   i   =     1  ,   #  param   do  
    CancelParamRequest(class, sec, param[i])
    end  
  end  

  function    OnQuote (class_code, sec_code)   end  
  function    OnParam (class_code, sec_code)   end  
  function    OnAllTrade (alltrade)   end      
 
QUIK 9.3.1.11, Lua 5.4
Открыто, как минимум одно окно: стакан ликвидного инструмента.
Конечно, никто не запускает скрипты с тысячами функций, но при нескольких запущенных скриптах с десятками функций при высокой активности на бирже получаем нихилую загрузку CPU.

ЗЫ: У кого "один скрипт на все случаи жизни" с парой функций, может игнорировать эту тему.
Без флуда!

Здравствуйте!
Ваше письмо получено, проблема изучается. Постараемся в ближайшее время дать ответ.

Подскажите, занимаются ли разработчики терминала сейчас этой проблемой или пока есть более приоритетные задачи? Интересует, по крайней мере, диагноз: удалось ли уже увидеть проблему производительности в этом нагрузочном тесте?
Страницы: Пред. 1 2 3 4 5 6 След.
Читают тему
Наверх