Перейти к содержимому

Лидеры


Популярный контент

Показан контент с высокой репутацией 10.10.2021 во всех областях

  1. 6 баллов
    Экспериментальное обновление Ocelot. Я синхронизировал Ocelot Brain с последними изменениями в оригинальном моде. (Релиза у них ещё не было, но вроде фишки интересные, имеет смысл подтянуть их в эмулятор). Основное изменение это буферы видеопамяти (vram), можно делать графику быстрее и круче (в теории). Кто-нибудь уже игрался с этим? Протестируйте пожалуйста, потому что пока всё сделано на черновую. Ocelot Desktop VRAM Edition - Скачать бесплатно без СМС
  2. 2 балла
    Во-первых, эта гипотеза не подтверждается исходниками Lua. Во-вторых, не подтверждается экспериментально. Усечённый листинг исходников я уже продемонстрировал, теперь настало время демонстрации. 1. Этот эксперимент показывает явную зависимость типа возвращаемого результата от типов операндов: > return 7//3 2 > return 7.0//3 2.0 В первом случае результат целочисленный, а во втором – дробный. Если операнды предварительно округляются, то зачем приводится к дробному типу результат операции? Да и и если бы эта гипотеза была верна, то операция с целочисленными операндами выполнялась бы быстрее, нежели с дробными. А ситуация явно противоположная. 2. Этот эксперимент демонстрирует, что округляется лишь результат, но не операнды: > 3 // 1 3 > return 3.1//1.1 2.0 > 3.9 // 1.9 2.0 Теперь почитаем приведённый выше учебник Роберту – наше всё – Иерузалимски: Практика является критерием истины и в данном случае позволяет считать утверждение об округлении операндов ошибочным. Ошибаются все. И авторы учебников тоже. Даже хорошие авторы хороших учебников. И я тоже могу ошибиться. Поэтому не верь мне, а проверь.
  3. 1 балл
    Сидел читал форум, наткнулся на тему "Управление роботом с планшета" и сразу понял что моего ума хватит на создание программы которая позволит управлять роботом с НАСТОЯЩЕГО ТЕЛЕФОНА на системе android. И так, представляю вам - RRCM - Robot Remote Controll Mobile Что вам понадибится? 1. Телефон на android 2. Робот с минимальными компонентами и open os 3. Интернет карта на роботе Установка: 1. На робота ставим программу RRCM (pastebin get y2Twekz8 RRCM) 2. Ставим серверный скрипт на сервер/свой пк(если порт 5000 открыт): -- 1. Ставим python -- 2. После установки python3 вводим в терминал/cmd команды: "pip install flask" "pip install flask-restful", также если в четвёртом шаге у вас возникнет ошибка, пробуйте "pip3 вместо "pip" -- 3. Скачиваем скрипт - *тык* -- 4. Запускайте скрипт(windows: двойной клик по скрипту, linux: "python3 название_скрипта" 3. Ставим приложение на android - *тык* 4. Запускаем приложение, вводим только домен/ip:port нажимаем connect - если появляются кнопки управления - работает, если приложение виснет - какая-та проблема(скорее всего приложение не видит сервер 5. В скрипте RRCM на роботе изменяем локальный ip:port на ваш домен/ip:port 6. Запускаем RRCM на роботе. 7. Всё должно работать. Если у многих будут проблемы, запишу видео. В будущем планирую сделать скрипт на EFI что-бы не тратится на диск. Не удивляйтесь малому функционалу, проект был заброшен 2 раза, скоро сделаю обнову. (возможно) UPD: Забыл сказать! Для остановки скрипта надо перезагружать робота, но в скором времени сделаю кнопку в приложении для остановки скрипта Если будут ошибки - пишите, разберусь. UPD2: Если вы боитесь за безопасность устройства то вот вам исходник приложения - *тык* Приложение билдить на андроид в unity
  4. 1 балл
    О том и речь. Делимое-то тоже целочисленное. Всё целочисленное: и операция деления, и делимое, и делитель, и частное. Но есть нюанс. Для понимания сути происходящего пришлось погрузиться в чтение исходников Lua. Пересказывать всю цепочку поисков слишком долго. Поэтому кратко изложу принципы. Сначала ищем по всем файлам фрагмент "idiv", затем сопоставляем, что откуда вызывается, а для завершения картины запрашиваем построение ассемблерного листинга нужных файлов с использованием опций из makefile. В сухом остатке имеем: Есть две разные операции целочисленного деления: для целых и для дробных чисел, как бы странно это не звучало. Операция целочисленного деления реализована гораздо более сложным кодом, нежели деление дробных чисел. Целочисленное деление дробных чисел: # lobject.c:81: case LUA_OPIDIV: return luai_numidiv(L, v1, v2); vdivsd %xmm1, %xmm0, %xmm0 # v2, v1, tmp101 vroundsd $9, %xmm0, %xmm0, %xmm0 #, tmp101, <retval> ret Целочисленное деление целых чисел: # lobject.c:60: case LUA_OPIDIV: return luaV_idiv(L, v1, v2); movq %rcx, %rdx # v2, movq %rax, %rsi # v1, jmp luaV_idiv # ... luaV_idiv: leaq 1(%rdx), %rax movq %rdx, %rcx cmpq $1, %rax jbe .L350 movq %rsi, %rax cqto idivq %rcx xorq %rsi, %rcx js .L351 ret ... Часть кода вырезана, там обрабатываются проверки деления на ноль и работы с отрицательными числами. Но и в этом куске кода почти все операции выполняют эти самые проверки. Необходимыми же операциями являются лишь idivq, да ret. Возможно, там нужны ещё какие-то операции перемещения из регистра в регистр, но они быстрые в сравнении с названными выше. Влияют. Тем не менее я рискну предположить, что на чистом Си без вспомогательных проверок целочисленное деление выполнится быстрее нежели дробное. Даже с SSE-оптимизациями. Возможно, кто-то проверит.
  5. 1 балл
    Посмотрим на байт-код: $ echo 'local function round(nul) return nul + (2 ^ 52 + 2 ^ 51) - (2 ^ 52 + 2 ^ 51) end' | luac5.3 -l -l - main <stdin:0,0> (2 instructions at 0x55f08348ca20) 0+ params, 2 slots, 1 upvalue, 1 local, 0 constants, 1 function 1 [1] CLOSURE 0 0 ; 0x55f08348cc60 2 [1] RETURN 0 1 constants (0) for 0x55f08348ca20: locals (1) for 0x55f08348ca20: 0 round 2 3 upvalues (1) for 0x55f08348ca20: 0 _ENV 1 0 function <stdin:1,1> (4 instructions at 0x55f08348cc60) 1 param, 2 slots, 0 upvalues, 1 local, 1 constant, 0 functions 1 [1] ADD 1 0 -1 ; - 6.7553994410557e+15 2 [1] SUB 1 1 -1 ; - 6.7553994410557e+15 3 [1] RETURN 1 2 4 [1] RETURN 0 1 constants (1) for 0x55f08348cc60: 1 6.7553994410557e+15 locals (1) for 0x55f08348cc60: 0 nul 1 5 upvalues (0) for 0x55f08348cc60: Видно, что ADD и SUB тут работают с константой. Обращение к константе быстрое, доступное, лёгкое, воздушное. В предложенном варианте появляется upvalue, к которым доступ будет дольше. Так что эффективнее не станет.
  6. 0 баллов
    @LeshaInc эту фичу выкинул. Багу считаем пофикшенной.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...