Загадка для знатоков RSL (Или как ускорить RSL)

0 (0)
  • Развернуть Загадка для знатоков RSL (Или как ускорить RSL) ( LeonL  11.10.2013 10:46 )
    5(1)
    Все мы часто так или иначе используем RSL, и всем нам хочется чтобы язык работал без косяков с наибольшей отдачей, но к
    сожалению с тех пор как Кубрин больше не занимается его развитием, к компании боятся что либо в нем менять, и никакого развития
    с 2009 года нет, и косяки никто не исправляет и нам как клиентам приходится самим искать пути решения своих проблем.
    Вот как раз пример такого косяка:
    http://support.softlab.ru/Portal/InterSupport/topic.asp?id=262136&Page=3&FilterId=113&Which=a&SortOrder=0
    А теперь собственно перейдем к другому косяку который я нашел на днях.

    Вот коротенький пример:
    class testm( count )
          var a=TArray(100000,100000);
          var b=TArray(100000,100000);
    
          var i=0;
          InitProgress(count,"","");
          while (i< count)
                UseProgress(i);
                a[a.size]=Tarray;
                b[b.size]=Tarray;
                i=i+1;
          end;
          RemProgress();
    
          MsgBox("А сейчас я зависну");
    end;
    
    testm( 100000 );
    MsgBox("Не прошло и года");
    
    А теперь внимание вопрос:
    Чем занимается система в промежутке между "А сейчас я зависну" до "Не прошло и года" у нас возникает пауза порядка минуты,
    при том что на создание класса ушла всего секунда.

    PS: Давайте вспомним все места в рске где используются классы, это печать документов, загрузки документов и т.д и т.п и всезде есть эти тормоза
    просто количество классов 1000-2000 и задержки не так велики, но они есть просто мы считаем что это норма и никто не думал почему. А налицо конкретная
    ошибка в деструктуризации класса.
    PPS: Почему это происходит я догадываюсь, что надо написать после MsgBox("А сейчас я зависну"); для того чтобы небыло этих тормозов я тоже знаю, но
    готовый ответ это неинтересно.


    >> Ответить