Производительность библиотеки bit

Страницы: 1
RSS
Производительность библиотеки bit
 
Неожиданный результат: О ПОЛЬЗЕ INLINE-КОДА ИЛИ БИБЛИОТЕКА BIT
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
А то, что bit.bxor(0xFFFFFFFF, 0x0) даёт отрицательный результат это нормально?
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
s_mike@rambler.ru написал:
Неожиданный результат:  О ПОЛЬЗЕ INLINE-КОДА ИЛИ БИБЛИОТЕКА BIT
403 :)
Цитата
Старатель написал:
А то, что bit.bxor(0xFFFFFFFF, 0x0) даёт отрицательный результат это нормально?
а какой результат от XOR-а минус единицы с нулем вы ожидаете?
 
Цитата
Imersio Arrigo написал:
а какой результат от XOR-а минус единицы с нулем вы ожидаете?

Не знаю, как у вас, у меня на входе положительное число:
Код
message(tostring(0xFFFFFFFF == -1))  -->  false
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Цитата
Imersio Arrigo   написал:
а какой результат от XOR-а минус единицы с нулем вы ожидаете?
Не знаю, как у вас, у меня на входе положительное число:
Код
   message (tostring( 0xFFFFFFFF   =  =   -  1 ))   -->  false   
Незнаю как работает этот ваш tostring, но вообще-то  0xFFFFFFFF - это знаковая_32-х_битная_минус_единица
 
В луа нет целых 32-разрядных целых. Там есть только float

print(0xFFFFFFFF)   --> 4294967295

Положительное число.

А то, что внутри библиотеки bit идет оперирование типами данных , которых нет в стандарте языка - это очередная "особенность".
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Вот, например, на ту же тему: Особенность интерпретатора Lua но уже внутри самого интерпретатора
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
В луа нет целых 32-разрядных целых. Там есть только float

print(0xFFFFFFFF)   --> 4294967295
Хорошо.... хорошо.. хорошо что у меня такого нет.

Цитата
s_mike@rambler.ru написал:
А то, что внутри библиотеки bit идет оперирование типами данных
Ну вообще, битовые операции подразумевают целочисленные типа.
И то, что "внутри библиотеки bit идет оперирование типами данных" наверняка где-то написано.
И, вероятно, должно быть преобразование к int64, раз такое дело. Чтобы все входило.
 
Цитата
s_mike@rambler.ru написал:
Неожиданный результат:  О ПОЛЬЗЕ INLINE-КОДА ИЛИ БИБЛИОТЕКА BIT
Добрый день
Цитата
Эксперименты на разрядах, отличных от младшего, дали аналогичный результат.
приведите пример кода, пожалуйста.
 
Цитата
Michael Bulychev написал:
Цитата
s_mike@rambler.ru   написал:
Неожиданный результат:   О ПОЛЬЗЕ INLINE-КОДА ИЛИ БИБЛИОТЕКА BIT  
Добрый день
Цитата
Эксперименты на разрядах, отличных от младшего, дали аналогичный результат.
приведите пример кода, пожалуйста.
Обновил статью - добавил пример проверки бита, отличного от младшего
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
Обновил статью - добавил пример проверки бита, отличного от младшего

Что-то здесь не так:
Код
Число   Номер бита   Выражение   Результат
110111   3   (55 % 8 >= 32)   1
Результат выражения будет false.

Если не ошибаюсь, то функция проверки установленного бита будет выглядеть так:
Код
function bit_test(flags, index)
  return flags % (2^(index+1)) >= 2^index
end
что в два раза медленнее, чем bit.test "из коробки".
Надо делать так, как надо. А как не надо - делать не надо.
 
Немного оптимизировал код:
Код
function test(flags, index)
  local n = 2^index
  return flags % (2 * n) >= n
end

Теперь bit.test быстрее на 38%
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Немного оптимизировал код:
Код
   function   test (flags, index)
   local  n  =   2 ^index
   return  flags % ( 2   *  n)  >  =  n
 end   

Теперь bit.test быстрее на 38%
вы невнимательно читали. Скорость достигается за счёт inline кода, а вы опять функции пишете.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
Страницы: 1
Читают тему
Наверх