var c = 500e3;
var i = c + 1, t = new Date().getTime();
while(--i)
(i % 16) ? (16 - i % 16) : 0;
var dt1 = new Date().getTime() - t;
var i = c + 1, t = new Date().getTime();
while(--i)
(i & 0xf) ? (16 - i & 16) : 0;
var dt2 = new Date().getTime() - t;
var i = c + 1, t = new Date().getTime();
while(--i)
Math.ceil(i/16)*16;
var dt3 = new Date().getTime() - t;
WScript.Echo("%: " + dt1 + " ms\n&: " + dt2 + " ms\nceil: " + dt3 + " ms");
/*
%: 1655 ms
&: 1523 ms
ceil: 1795 ms
*/
var oSys = AkelPad.SystemFunction();
var c = 500e3;
var i = c + 1, t = new Date().getTime();
while(--i)
oSys.Call("kernel32::MulDiv", i, 80, 96);
var dt1 = new Date().getTime() - t;
var i = c + 1, t = new Date().getTime();
while(--i)
Math.round(i * 80 / 96);
var dt2 = new Date().getTime() - t;
WScript.Echo("MulDiv: " + dt1 + " ms\nMath.round: " + dt2 + " ms");
/*
MulDiv: 4250 ms
Math.round: 609 ms
*/
Result:
MulDiv: 4250 ms
Math.round: 609 ms
Posted: Tue May 06, 2014 9:19 pm
by FeyFre
People, what do you talking about?
You doing this scaling operation few times per scripts. Do you really care of its performance?
Posted: Tue May 06, 2014 9:52 pm
by opk44
FeyFre
1. Формально: Есть разница 4 или 0,6
2. Спекулятивно: Насколько я понял, речь изначально о библиотеке для чужих (пользовательских) скриптов
3. cheerfully: Пользователям представилась возможность получить удовольствие наблюдая за общением гиков.
Posted: Wed May 07, 2014 3:18 am
by Lenchik
Да ладно, полезная инфа. Вдруг я как-нибудь забацать скрипт какой-нибудь и вспомню, что где-то в недрах этой темы были такие вот тесты и я сразу либо свой скрипт тестировать буду, либо учту эти выводы. Вообще можно было бы результаты тестов в шапку темы вынести.
И как-то проанализировать или собрать статистику по всем актуальным пользовательским скриптам.
И вообще, для некоторых, пользователь Акельпада сам гик - чего он только не вытворяет с текстами с помощью Акельпада.
OK, solved the matter of creating dialog windows by using CreateWindowEx function.
Now about creating modeless dialog boxes by using CreateDialogIndirectParam function.
The problem is similar - AkelPad crashes when trying to create the fifth dialog box.
if (msgs->lpCallback->objFunction->lpVtbl->Invoke(msgs->lpCallback->objFunction, DISPID_VALUE, &IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, dispp, &vtInvoke, 0, 0) == S_OK)
{
if (vtInvoke.vt == VT_BOOL)
Posted: Fri May 09, 2014 5:50 am
by Instructor
KDJ
You should make "function DialogCallback(hWnd, uMsg, wParam, lParam)" global (move it outside CreateNewDialog) - more economy or make some connection of callback with global context - less economy:
...
var aRegCount=[];
var nRegCount=0;
CreateNewDialog(0);
function CreateNewDialog(hParent)
{
try
{
aRegCount[nRegCount++]=oSys.RegisterCallback(DialogCallback);
...
If RegisterCallback fails, generates run time error.
Run time error generated by JScript engine.
Posted: Fri May 09, 2014 6:28 am
by Skif_off
Подскажите, пожалуйста, название скрипта для раскладывание чисел на члены, типа 1809=1+16+256+512+1024. Где-то видел краем глаза, что-то не соображу как найти.
If RegisterCallback fails, generates run time error.
Run time error generated by JScript engine.
In which case, RegisterCallback returns false (0)?
Posted: Sun May 11, 2014 8:48 pm
by KDJ
CreateDialog_functions.js
Added: alignment of window size and position according to screen DPI.
Added: Scale object.
Fixed: some bugs.
Fixed: CreateDialog_example.js.