Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Добрый день.
Подскажите насчет документации/описания. Что-то почти ничего не нашел. Ну, кусочки кода здесь.

После инсталляции в Delphi 10.3.2 в компонентах появилась закладка "DWScript", с компонентами:

TDelphiWebScript
TdwsComConnector
TdwsRTTIConnector
TdwsSimpleDebugger
TdwsDebugger
TdwsUnit
TdwsHtmlFilter
TdwsSymbolsLib
TdwsGlobalVarsFunctions
TdwsGUIFunctions
TdwsRestrictedFileSystem
TdwsNoFileSystem
TdwsClassesLib
TdwsCustomLocalizer
TdwsJSONLibModule


В библиотеке наверняка есть еще много полезных классов, хорошо бы о них узнать до начала процесса "метода тыка".

По примерам потихоньку разбираюсь, конечно, но может быть, кто-либо встречал более-менее толковое описание?
Спасибо.
11 сен 19, 12:00    [21968398]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
ёёёёё,

Лучший учебник - папка Test.
11 сен 19, 12:07    [21968403]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Kazantsev Alexey
ёёёёё,

Лучший учебник - папка Test.

Ну да, вот пытаюсь заставить работать содержимое папки \Demos.
11 сен 19, 12:11    [21968409]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
https://bitbucket.org/egrange/dwscript/wiki/Home
11 сен 19, 12:30    [21968431]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Спасибо, полезно, но не очень удобно и очень мало... :(
11 сен 19, 13:32    [21968497]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Какой свободный язык программирования...
a := if i > 0 then 42 else 7;
11 сен 19, 22:49    [21968978]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
ёёёёё,

Тернарный оператор же. Такое много где есть (Kotlin, Rust, Oxygene например).
11 сен 19, 23:00    [21968991]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Kazantsev Alexey,

очень круто. Разбираюсь - просто сказка, после FastScript.
11 сен 19, 23:05    [21968994]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
asviridenkov
Member

Откуда:
Сообщений: 3948
Kazantsev Alexey
ёёёёё,

Тернарный оператор же. Такое много где есть (Kotlin, Rust, Oxygene например).


Я у себя реализовал, и оказалось что местами очень упрощает код. И инлайновый case еще
11 сен 19, 23:45    [21969008]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
asviridenkov
... И инлайновый case еще

Это что?
12 сен 19, 00:05    [21969018]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
rgreat
Member

Откуда:
Сообщений: 5359
ёёёёё
asviridenkov
... И инлайновый case еще

Это что?
Вангую что расширенный IFTHEN.
12 сен 19, 00:22    [21969021]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
asviridenkov
Member

Откуда:
Сообщений: 3948
ёёёёё,

a := case b of 1: 2; 1+1: 4-1; else 4 end;
12 сен 19, 00:22    [21969022]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
asviridenkov
И инлайновый case еще

Oxygene:
var s := case i of
  0: 'none';
  1: 'one';
  2: 'two';
  3..5 : 'a few';
  else 'many';
end;

В Kotlin тоже похожая конструкция есть.
12 сен 19, 00:32    [21969027]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ziv-2014
Member

Откуда:
Сообщений: 462
Смогли они реализовать DWScript под андроид, ios и linux?
12 сен 19, 09:53    [21969139]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
ziv-2014,

The goal is to target Win32 and Win64 compilers, mobile platforms and Delphi Linux are currently not in the scope.
12 сен 19, 10:02    [21969145]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ziv-2014
Member

Откуда:
Сообщений: 462
Kazantsev Alexey
ziv-2014,

The goal is to target Win32 and Win64 compilers, mobile platforms and Delphi Linux are currently not in the scope.

Они обещали, сделать компилятор для мобильных платформ. Жаль конечно же.
12 сен 19, 10:34    [21969191]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
ziv-2014
Они обещали, сделать компилятор для мобильных платформ. Жаль конечно же.

Когда это такое было? Уж не путаешь ли ты его со SmartMobileStudio основанной на DWS?
12 сен 19, 10:42    [21969209]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ziv-2014
Member

Откуда:
Сообщений: 462
Kazantsev Alexey
ziv-2014
Они обещали, сделать компилятор для мобильных платформ. Жаль конечно же.

Когда это такое было? Уж не путаешь ли ты его со SmartMobileStudio основанной на DWS?

Несколько лет тому назад. Но сейчас не могу найти у них на сайте этой информации.
А SmartMobileStudio можно использовать DWS в приложениях для мобильных платформ?
12 сен 19, 11:39    [21969263]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
afgm
Member

Откуда:
Сообщений: 577
Помимо отсутствия под мобилки (которое может неожиданно застопорить проект, если заранее не заложились) с некоторого времени только самая последняя Delphi 10.3 (
Если выворачивать систему скриптами наружу (к пользователю), то очень хочется code completion. Пока только в TSM Scripter видел.

А так да, бесспорные плюсы сабжа это скорость и вкуснота синтаксиса/фич.
12 сен 19, 12:47    [21969349]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
afgm
... с некоторого времени только самая последняя Delphi 10.3 (
Если выворачивать систему скриптами наружу (к пользователю), то очень хочется code completion. Пока только в TSM Scripter видел.

А так да, бесспорные плюсы сабжа это скорость и вкуснота синтаксиса/фич.

Странные вещи говоришь.
Дистриб DWS включает пакаджи для D2009 - DX7. Я установил *.DX7 в D10.3.2, и на ранние ставятся.
В дистрибе, в демках, есть связка с SynEdit. Отлично CodeCompletion работает. И на лету подхватывает новые объекты. Или ты о чем-то своем?
12 сен 19, 13:22    [21969403]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
afgm
Member

Откуда:
Сообщений: 577
ёёёёё
Странные вещи говоришь.
Дистриб DWS включает пакаджи для D2009 - DX7. Я установил *.DX7 в D10.3.2, и на ранние ставятся.

DWScript lead platform is currently Delphi 10.3, compatibility with older Delphi version is not officially maintained, it may work, or it may not.
Автор в коде уже во всю инлайновым var-ом балуется, так что скорее "may not".
ёёёёё
В дистрибе, в демках, есть связка с SynEdit. Отлично CodeCompletion работает. И на лету подхватывает новые объекты. Или ты о чем-то своем?

Пример уже не помню, но частенько подсказки подсказывают только объекты и не могут проперти. Перебирал кучу скриптовых движков, так что уже не помню ситуацию с DWScript.
12 сен 19, 14:22    [21969499]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
afgm
Автор в коде уже во всю инлайновым var-ом балуется, так что скорее "may not".

Ну и ладно. Легко ищутся и находятся версии DWS даже для D7. Даже они куда круче современного FastScript (например).
Вообще, странно сидеть на старых дельфях и ждать, что бесплатная библиотека будет развиваться с оглядкой на древности. Хотя, FastRepot-овцы поддерживают, начиная с D7, что круто.
12 сен 19, 15:00    [21969552]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Kazantsev Alexey
Лучший учебник - папка Test.

Блин, под Delphi 10.3.2 я проект \DWS\Test\LanguageTests.dpr даже собрать не могу...

uses
   Classes, SysUtils,
   {$ifdef FPC}
   fpcunit, testutils, testregistry
   {$else}
   TestFrameWork, TestUtils
   {$endif}
   ;

Файла TestUtils.pas в D10.3.2 больше нет.

Что теперь в DUnitX вместо него?
12 сен 19, 16:36    [21969651]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1578
ёёёёё,

DUnit вроде все еще можно тут взять
http://dunit.sourceforge.net/
12 сен 19, 16:41    [21969656]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
X-Cite
ёёёёё,

DUnit вроде все еще можно тут взять
http://dunit.sourceforge.net/

Спасибо, но, к сожалению, нет - там совсем древнее.
...
Например, в упомянутых (\DWS\Test\LanguageTests.dpr) тестах генерируется событие OnCheckCalled, реализацию которого я не нашел ни в "штатных" д-юнитах, ни в dws, но еще где.

Ну да и фик с ними.
12 сен 19, 16:53    [21969668]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
ёёёёё
Kazantsev Alexey
ёёёёё,

Лучший учебник - папка Test.

Ну да, вот пытаюсь заставить работать содержимое папки \Demos.

Зараза, и демки-то не сразу соберешь.
Например, в классе TdwsSymbolDictionary больше нет индексируемого свойства Items[index : ineger] : TSymbolPositionList.
Доступ к элементам теперь через энумератор.
Соответственно, этот код больше не работает:
        for ItemIndex := 0 to SymbolDictionary.Count - 1 do
        begin
          TestSymbol := SymbolDictionary.Items[ItemIndex].Symbol;
...

теперь нужно вот так:
        for var Item in SymbolDictionary do begin
           TestSymbol := Item.Symbol;
...
12 сен 19, 18:09    [21969724]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
ziv-2014
А SmartMobileStudio можно использовать DWS в приложениях для мобильных платформ?

В SMS приложения пишутся на DWS, который затем транслируется в JS. Запускается оно, понятное дело, везде где браузер работает.
12 сен 19, 18:32    [21969739]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Интересно. В DWS, при декларации типов скриптовых объектов, которые реализуются в коде Delphi, предлагается реализовать соответствующий метод-событие *OnCleanUp(). Который автоматически вызывается при сбросе количества ссылок на конкретный объект данного типа в ноль (например, при выходе из области видимости или явно - путем вызова деструктора). То есть, объекты всех дельфийских классов типа TStringList и т.п., экспортированные в скрипт, нужно только создавать, не заботясь об их освобождении. Ну, или заботясь, если вдруг нужно резко освободить память. Классно, можно без try-finally обходиться.
12 сен 19, 21:34    [21969906]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
asviridenkov
Member

Откуда:
Сообщений: 3948
ёёёёё,

У меня аналогично сделано, только автоматом - если объект создается через вызов конструктора, он уничтожается. Плюс есть спец. функция для регистрации в случае других ситуаций.
12 сен 19, 21:55    [21969913]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
kmsskm
Member

Откуда:
Сообщений: 20
ёёёёё
Спасибо, полезно, но не очень удобно и очень мало... :(

Может так удобней будет DWScript
13 сен 19, 01:35    [21969967]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Весьма "доставляющая" картинка...

Картинка с другого сайта.
13 сен 19, 22:59    [21970777]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
rgreat
Member

Откуда:
Сообщений: 5359
ёёёёё,

Код покажи. ;)
13 сен 19, 23:48    [21970789]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
rgreat
Код покажи. ;)

Просто DWS умеет в JIT (код есть в демках, там же и сравнение с LaPe). Кстати, если скорость важна, есть ещё интересный движок LaPe, там даже работа с указателями имеется.
14 сен 19, 00:00    [21970791]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
rgreat
ёёёёё,

Код покажи. ;)

+ ДэлфА'й

// PaintBitmapDelphi
//
procedure TMainForm.PaintBitmapDelphi;
const
   cSize = 500;
var
   i, j, newColor : Integer;
   u, v, x, y, z : Double;
begin
   for i := 0 to cSize-2 do begin
      for j := 0 to cSize-2 do begin
         x := -0.8 + 3.0 * i / cSize;
         y := -1.4 + 2.8 * j / cSize;
         newColor := 0;
         u := 0;
         v := 0;
         repeat
            z := Sqr(u) - Sqr(v) - x;
            v := 2 * u * v - y;
            u := z;
            newColor := newColor + 1;
         until (Sqr(u) + Sqr(v) > 9) or (newColor = 16);
         SetPixel(i + 1, j + 1, newColor);
      end;
   end;
end;


+ DWS

// PaintBitmapDWSscript
//
procedure TMainForm.PaintBitmapDWSscript;
const
   cSource = ''
      +'const cSize = 500;'#13#10
      +'var i, j, newColor : Integer;'#13#10
      +'var u, v, x, y, z : Float;'#13#10
      +#13#10
      +'for i := 0 to cSize-2 do begin'#13#10
      +'   for j := 0 to cSize-2 do begin'#13#10
      +'      x := -0.8 + 3.0 * i / cSize;'#13#10
      +'      y := -1.4 + 2.8 * j / cSize;'#13#10
      +'      newColor := 0;'#13#10
      +'      u := 0;'#13#10
      +'      v := 0;'#13#10
      +'      repeat'#13#10
      +'         z := Sqr(u) - Sqr(v) - x;'#13#10
      +'         v := 2 * u * v - y;'#13#10
      +'         u := z;'#13#10
      +'         newColor := newColor + 1;'#13#10
      +'      until (Sqr(u) + Sqr(v) > 9) or (newColor = 16);'#13#10
      +'      SetPixel(i + 1, j + 1, newColor);'#13#10
      +'   end;'#13#10
      +'end;'
   ;

var
   prog : IdwsProgram;
   {$ifndef WIN64}
   jitter : TdwsJITx86;
   {$endif}
begin
   prog:=DelphiWebScript.Compile(cSource);

   {$ifndef WIN64}
   jitter:=TdwsJITx86.Create;
   jitter.Options:=jitter.Options-[jitoNoBranchAlignment];
   jitter.GreedyJIT(prog.ProgramObject);
   jitter.Free;
   {$endif}

   if prog.Msgs.Count=0 then
      prog.Execute
   else ShowMessage(prog.Msgs.AsInfo);
end;

14 сен 19, 12:27    [21970846]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
rgreat,


Причем, никакого рисования внутри цикла тестирования не делается:
+ SetPixel Delph




+ SetPixel DWS

procedure TMainForm.SetPixel(x, y, color : Integer);
const
   cColors: array[0..16] of TColor = (
      $000022, $000033, $000044, $000055, $000066, $000077, $000088,
      $101099, $3030AA, $4040BB, $5050CC, $6060DD, $7070EE, $8080FF,
      $9090FF, $A0A0FF,
      $000000
      );
begin
   PIntegerArray(FScanLines[y])[x]:=cColors[color]; // Здесь FScanLines - FScanLines : array of Pointer;
end;


В DWS обращение к SetPixel() транслируется в ту же дельфийскую процедуру:
SetPixel DWS
procedure TSetPixelMagic.DoEvalProc(const args : TExprBaseListExec);
begin
   MainForm.SetPixel(args.AsInteger[0], args.AsInteger[1], args.AsInteger[2]);
end;

--------
Процедура тестирования:

+ Как тестировали
procedure TMainForm.Benchmark;
const
   cNB_LOOPS = 10;
var
   tStart, tStop, tFreq : Int64;
   i : Integer;
begin
// Тестирование кода Delphi
   QueryPerformanceFrequency(tFreq);

   PrepareBitmap;
   QueryPerformanceCounter(tStart); // Старт

   for i:=1 to cNB_LOOPS do
      PaintBitmapDelphi;

   QueryPerformanceCounter(tStop); // Стоп

   IMDelphi.Picture.Assign(FBitmap); // Перенос результата на картинку
   FBitmap.Free;
   LADelphi.Caption:=Format('Delphi: %0.1f ms', [1000*(tStop-tStart)/tFreq]);

//******************************
// Тестирование кода DWScript:
   PrepareBitmap;

   QueryPerformanceCounter(tStart); // Старт

   for i:=1 to cNB_LOOPS do
      PaintBitmapDWSscript;

   QueryPerformanceCounter(tStop); // Стоп

   IMDWScript.Picture.Assign(FBitmap); // Перенос результата на картинку
   FBitmap.Free;
   LADWScript.Caption:=Format('DWScript: %0.1f ms (incl. compilation)', [1000*(tStop-tStart)/tFreq]);
end;


14 сен 19, 12:38    [21970847]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
rgreat,

и, это. Код не совсем равнозначен. Например, Integer в Dephi - это 32-битное знаковое. А в DWS интыджер - это 64-битное целое.
И, как мне кажется, надо бы вынести время компиляции за пределы теста. Но тогда результаты совсем уж дикими будут...
14 сен 19, 12:41    [21970848]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Kazantsev Alexey
rgreat
Код покажи. ;)

Просто DWS умеет в JIT (код есть в демках, там же и сравнение с LaPe). Кстати, если скорость важна, есть ещё интересный движок LaPe, там даже работа с указателями имеется.

Да. :)

Сейчас прогоню без JIT.
И так, на моей машинке, с JIT:

К сообщению приложен файл. Размер - 25Kb
14 сен 19, 12:46    [21970850]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
ёёёёё,

с отключенным JIT.

К сообщению приложен файл. Размер - 23Kb
14 сен 19, 12:48    [21970852]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Delphi все же в 18 раз быстрее... :)
14 сен 19, 12:48    [21970854]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3339
Еще интересна раскладка по ядрам процессора. Есть стойкое подозрение, что жит 'мухлюет' ядрами. И если распараллелить делфи код (что в общем можно элементарно сделать в одну строку буквально), то картина поменяется на обратную.
14 сен 19, 18:14    [21970969]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
makhaon
Еще интересна раскладка по ядрам процессора. Есть стойкое подозрение, что жит 'мухлюет' ядрами. И если распараллелить делфи код (что в общем можно элементарно сделать в одну строку буквально), то картина поменяется на обратную.

Ты всерьез считаешь, что следует доказывать преимущество Delphi перед скриптовым движком? :)
14 сен 19, 18:28    [21970972]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
rgreat
Member

Откуда:
Сообщений: 5359
ёёёёё,

Почему нет, если он компилируемый.
14 сен 19, 18:31    [21970975]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3339
ёёёёё,

Я не люблю нездоровых сенсаций :)
И так. Один поток, 100 итераций, 2700 ms. 100 итераций + либа распараллеливания STParallel, режим pfAtomic. 400 ms. i7, 4 ядра x 2 Ht
14 сен 19, 18:41    [21970977]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
makhaon
ёёёёё,

Я не люблю нездоровых сенсаций :)
И так. Один поток, 100 итераций, 2700 ms. 100 итераций + либа распараллеливания STParallel, режим pfAtomic. 400 ms. i7, 4 ядра x 2 Ht


Можешь в исходниках DWS посмотреть, что там да как, если настолько подгорает.
14 сен 19, 19:04    [21970978]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3339
ёёёёё,

в jit то как залезть? раскладку по ядрам так и не показали, увы.
14 сен 19, 19:47    [21970985]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3339
и нет, не подгорает. в отличие от сенсационстов я всегда ищу причины.
14 сен 19, 19:49    [21970987]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
asviridenkov
Member

Откуда:
Сообщений: 3948
makhaon
и нет, не подгорает. в отличие от сенсационстов я всегда ищу причины.


В теории он может for распараллеливать, но вряд ли это делает без спроса, т.к. side эффекты могут быть неожиданными. Я добавил специальный parallel for синтаксис для этого.
14 сен 19, 19:53    [21970988]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
The DWScript JIT compiler relies on SSE2 to outperform the Delphi 32bit compiler, its current main limitations are:

JIT centers around floating point and a limited subset of integer and Boolean operations, the rest isn’t JITted yet.
Function calls aren’t JITted at the moment, and neither are a variety of other statements.
The JIT works with the same data structures as the interpreted engine, that means script debuggers and everything else works on JITted code as if it was still interpreted, but that also means the basic data unit is still the 16 bytes Variant at the moment.
The JIT register allocator is currently limited to floating point (ie. no integer or pointer allocations).
DWScript Integer type is 64bit sized, so for 32bit values, Integer performance is lower than what Delphi 32 can do, even though the JIT can generate typically faster code for it than the Delphi 32bit compiler does for Int64.
14 сен 19, 20:00    [21970991]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Kazantsev Alexey
The DWScript JIT compiler relies on SSE2 to outperform the Delphi 32bit compiler, its current main limitations are:

JIT centers around floating point and a limited subset of integer and Boolean operations, the rest isn’t JITted yet.
Function calls aren’t JITted at the moment, and neither are a variety of other statements.
The JIT works with the same data structures as the interpreted engine, that means script debuggers and everything else works on JITted code as if it was still interpreted, but that also means the basic data unit is still the 16 bytes Variant at the moment.
The JIT register allocator is currently limited to floating point (ie. no integer or pointer allocations).
DWScript Integer type is 64bit sized, so for 32bit values, Integer performance is lower than what Delphi 32 can do, even though the JIT can generate typically faster code for it than the Delphi 32bit compiler does for Int64.


Может, кто-нибудь когда-нибудь и для Delphi напишет... JIT - компайлер... :(
14 сен 19, 20:05    [21970994]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
ёёёёё
Может, кто-нибудь когда-нибудь и для Delphi напишет... JIT - компайлер... :(

Надо бы, а то в некстгене совсем всё тухло...
14 сен 19, 20:14    [21970995]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3339
FPC вроде умеет в jit.
14 сен 19, 20:16    [21970996]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3790
makhaon,

Это большой секрет. Тихо!
14 сен 19, 20:26    [21970997]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
afgm
Member

Откуда:
Сообщений: 577
ёёёёё
В дистрибе, в демках, есть связка с SynEdit. Отлично CodeCompletion работает. И на лету подхватывает новые объекты. Или ты о чем-то своем?

Таки дошёл по случаю проверить. Не нормальный там code completion. Объекты подсказывает, а вот вот их свойства уже нет.
15 сен 19, 14:25    [21971144]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
afgm
ёёёёё
В дистрибе, в демках, есть связка с SynEdit. Отлично CodeCompletion работает. И на лету подхватывает новые объекты. Или ты о чем-то своем?

Таки дошёл по случаю проверить. Не нормальный там code completion. Объекты подсказывает, а вот вот их свойства уже нет.


К сообщению приложен файл. Размер - 29Kb
15 сен 19, 14:39    [21971152]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
afgm
ёёёёё
В дистрибе, в демках, есть связка с SynEdit. Отлично CodeCompletion работает. И на лету подхватывает новые объекты. Или ты о чем-то своем?

Таки дошёл по случаю проверить. Не нормальный там code completion. Объекты подсказывает, а вот вот их свойства уже нет.


И, это же всего лишь демки, показывающие возможность.
Список элементов откомпилированной программы доступен, и список элементов каждого элемента также доступен. Берешь да подставляешь куда надо. Хоть в SynEdit, хоть в Scintilla, хоть сам на лету в попап-меню (например).
15 сен 19, 14:44    [21971159]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
afgm,

"вложенные" объекты:

К сообщению приложен файл. Размер - 42Kb
15 сен 19, 15:04    [21971171]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
afgm, и, да, в демке что-то не работает или работает не так гладко, как хотелось бы - но ведь это всего лишь демонстрашка.
Но ведь информация о том, где брать данные - вся имеется.
15 сен 19, 15:07    [21971172]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Ыыы... крутяк...

К сообщению приложен файл. Размер - 23Kb
15 сен 19, 15:12    [21971176]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
afgm
Member

Откуда:
Сообщений: 577
ёёёёё
И, это же всего лишь демки, показывающие возможность.
Список элементов откомпилированной программы доступен, и список элементов каждого элемента также доступен. Берешь да подставляешь куда надо. Хоть в SynEdit, хоть в Scintilla, хоть сам на лету в попап-меню (например).

Я скачал последнюю из репозитория. Может чего и поломалось. Буду знать, спасибо!
15 сен 19, 15:24    [21971178]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
afgm
...Я скачал последнюю из репозитория...


Отсюда надо: https://bitbucket.org/egrange/dwscript/src/master/

Наверное. :)

+ Гит
git clone https://bitbucket.org/egrange/dwscript.git
15 сен 19, 15:33    [21971182]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Хм, в dws недоступны private/protected члены класса, определенные в том же модуле...
Впрочем, для сриптов это, наверное, логично.
16 сен 19, 08:07    [21971318]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
X-Cite
ёёёёё,

DUnit вроде все еще можно тут взять
http://dunit.sourceforge.net/

На самом деле, используется DUnit2. Для запуска которого требуются как минимум FastMM4 и Jedi (тьфу). "Джедаев" я ставить пока не готов...
3 окт 19, 09:07    [21985545]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Василий 2
Member

Откуда:
Сообщений: 741
DUnitX не вариант? Он вроде совместим
3 окт 19, 16:56    [21986061]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
ёёёёё
Member

Откуда:
Сообщений: 947
Василий 2
DUnitX не вариант? Он вроде совместим

Собрал с DUnit2. Понадобился FastMM4, и mORMot.
Вместо установки Jedi добавил файлик jedi.inc следующего содержания:
{$DEFINE DELPHIX_TOKYO}
{$DEFINE DELPHIXE_UP}

- тесты собрались.
3 окт 19, 17:22    [21986090]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
rgreat
Member

Откуда:
Сообщений: 5359
ёёёёё
Вместо установки Jedi добавил файлик jedi.inc следующего содержания:
{$DEFINE DELPHIX_TOKYO}
{$DEFINE DELPHIXE_UP}

- тесты собрались.
А-ха-ха!

Из 30 мегабайт сорцов используются 2 строчки.

Клевый DUnit2!
3 окт 19, 18:20    [21986153]     Ответить | Цитировать Сообщить модератору
 Re: DelphiWebScript (DWScript), документация/описание  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
rgreat
ёёёёё
Вместо установки Jedi добавил файлик jedi.inc следующего содержания:
{$DEFINE DELPHIX_TOKYO}
{$DEFINE DELPHIXE_UP}


- тесты собрались.
А-ха-ха! Картинка с другого сайта.

Из 30 мегабайт сорцов используются 2 строчки.

Клевый DUnit2!
Наводит на мыслю про... например, биты и адреса(указатели) :|
3 окт 19, 21:51    [21986290]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Delphi Ответить