Несколько дней назад, на форуме QUIK появился пост о функции сравнения таблиц.

В качестве прототипа было предложено следующее решение из интернета:

function areTablesEqual(t1, t2)
for k, v in pairs(t1) do
if t2[k] ~= v then return false end
end
for k, v in pairs(t2) do
if t1[k] ~= v then return false end
end
return true
end

Я собственно не смог придумать ситуации при создании торговых роботов,  в которой возникает такая необходимость.

Однако, решил написать подобную функцию на API C , чтобы сравнить быстродействие.

Мое решение с тестом на LUA можно взять здесь nklib_t(v2)

На моем компе, мое решение  примерно в 3 раза быстрее прототипа.

При программировании роботов на QLUA для терминала QUIK

может возникнуть необходимость подсчета числа элементов таблицы с ключами.

Это операцию можно выполнить с помощью следующей функции

local function ckey(table1) local n=0;
              for k, v in pairs(table1) do n=n+1; end
           return n;
end — программа подсчета числа элементов таблицы

Меня заинтересовал вопрос о возможности ускорить данную процедуру.

В результате я написал функцию на API C.

Для таблицы в 56 элементов получилось ускорение в 20 раз.

функцию и тест можно взять здесь: nklib_t(v2)