X++:
static void glibs(Args _args)
{
TmpAccountSum tmpAccountSum1,
tmpAccountSum2;
Counter i;
FreeText text;
Counter startTime;
#Define.cycles(1000)
;
startTime = WinAPI::getTickCount();
for (i = 0; i <= #cycles; i++)
{
tmpAccountSum1.clear();
tmpAccountSum2.clear();
text = int2str(i);
tmpAccountSum1.AccountNum = strrep("0", 20 - strlen(text)) + text;
tmpAccountSum2.AccountNum = strrep("0", 20 - strlen(text)) + text;
tmpAccountSum1.Balance01 = 999999 * 888888;
tmpAccountSum2.Balance01 = 999999 * 888888;
tmpAccountSum1.Balance02 = 999999 * 888888;
tmpAccountSum2.Balance02 = 999999 * 888888;
tmpAccountSum1.Balance03 = 999999 * 888888;
tmpAccountSum2.Balance03 = 999999 * 888888;
tmpAccountSum1.Balance04 = 999999 * 888888;
tmpAccountSum2.Balance04 = 999999 * 888888;
tmpAccountSum1.Balance05 = 999999 * 888888;
tmpAccountSum2.Balance05 = 999999 * 888888;
tmpAccountSum1.Balance06 = 999999 * 888888;
tmpAccountSum2.Balance06 = 999999 * 888888;
tmpAccountSum1.Balance07 = 999999 * 888888;
tmpAccountSum2.Balance07 = 999999 * 888888;
tmpAccountSum1.Balance10 = 999999 * 888888;
tmpAccountSum2.Balance10 = 999999 * 888888;
tmpAccountSum1.TaxCode = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum2.TaxCode = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum1.CurrencyCode = "XXX";
tmpAccountSum2.CurrencyCode = "XXX";
tmpAccountSum1.Posting = 1;
tmpAccountSum2.Posting = 1;
tmpAccountSum1.Dimension[1] = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum2.Dimension[1] = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum1.Dimension[2] = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum2.Dimension[2] = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum1.Dimension[3] = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum2.Dimension[3] = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum1.OperationsTax = 1;
tmpAccountSum2.OperationsTax = 1;
tmpAccountSum1.TransDate = today();
tmpAccountSum2.TransDate = today();
tmpAccountSum1.Txt = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
tmpAccountSum2.Txt = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
tmpAccountSum1.SortDate = today();
tmpAccountSum2.SortDate = today();
tmpAccountSum1.Balance01Cur = 999999 * 888888;
tmpAccountSum2.Balance01Cur = 999999 * 888888;
tmpAccountSum1.Qty01 = 999999 * 888888;
tmpAccountSum2.Qty01 = 999999 * 888888;
tmpAccountSum1.Qty02 = 999999 * 888888;
tmpAccountSum2.Qty02 = 999999 * 888888;
tmpAccountSum1.Qty03 = 999999 * 888888;
tmpAccountSum2.Qty03 = 999999 * 888888;
tmpAccountSum1.Voucher = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum2.Voucher = "XXXXXXXXXXXXXXXXXXXX";
tmpAccountSum1.insert();
tmpAccountSum2.insert();
}
info (strfmt("%1", (WinAPI::getTickCount() - startTime) / 1000));
startTime = WinAPI::getTickCount();
i = 0;
while select tmpAccountSum1
join tmpAccountSum2
where tmpAccountSum1.AccountNum == tmpAccountSum2.AccountNum
{
text = tmpAccountSum1.Voucher + tmpAccountSum2.Voucher;
i++;
}
info (strfmt("%1", i));
info (strfmt("%1", (WinAPI::getTickCount() - startTime) / 1000));
startTime = WinAPI::getTickCount();
i = 0;
while select tmpAccountSum1
{
while select tmpAccountSum2
where tmpAccountSum2.AccountNum == tmpAccountSum1.AccountNum
{
text = tmpAccountSum1.Voucher + tmpAccountSum2.Voucher;
i++;
}
}
info (strfmt("%1", i));
info (strfmt("%1", (WinAPI::getTickCount() - startTime) / 1000));
}