• Сongestion avoidance (UDP)?

    Lite_stream
    @Lite_stream Автор вопроса
    Drno, ну да, много мелких удаляются намного дольше, чем один большой, но там это связано с тем, что просто головке диска приходится больше физических перемещений делать
  • Сongestion avoidance (UDP)?

    Lite_stream
    @Lite_stream Автор вопроса
    Drno, ну, вообще звучит логично, ведь роутеру нужно перенаправить куда-то пакет, и чем больше их (пакетов), тем больше он будет выполнять своей целевой работы
  • Сongestion avoidance (UDP)?

    Lite_stream
    @Lite_stream Автор вопроса
    Извиняюсь, в данном случае речь шла о UDP. То есть для устранения заторов в сети важно только количество пакетов, а не их размер ?
  • Производительность системы обмена сообщениями?

    Lite_stream
    @Lite_stream Автор вопроса
    В теории, там тяжелая операция , только снятия элемента с головы очереди.

    Не могли бы Вы по подробнее, пожалуйста

    А так операция копирования данных
    в ОЗУ из одного места в другое , выполняется вспомогательными контролерами, а не АЛУ

    Ну классический способ скопировать массив - прочитать данные в регистр процессора, затем записать данные из этого регистра в сегмент данных, то есть оперативную память .То есть есть ещё дополнительный способ скопировать данные из одного массива в другой помимо упомянутого раньше - тот, который Вы упомянули. Не могли бы Вы назвать, пожалуйста, ассемблерную команду для этого
    Ну и в любом случае, если копировать данные без участия процессора бы всегда было выгодно, то по такой логике только copy on write реализацию конкурентные коллекции бы и имели.
  • Как работает NodeJS?

    Lite_stream
    @Lite_stream Автор вопроса
    res2001,
    Ответ на ваш вопрос содержится в приведенной вами цитате.
    Ну так естественно, там же в самом начале написано
    Правильно ли я понимаю, что
    Может быть, у меня ошибочное представление

    На сколько я знаю, асинхронный файловый ввод/вывод в libuv реализован с помощью потоков, т.е. в потоках используются обычные блокирующие операции. Но для ноды все асинхронно.
    Таки нашёл ответ на вопрос: документация
    Node has two types of threads: one Event Loop and k Workers. The Event Loop is responsible for JavaScript callbacks and non-blocking I/O, and a Worker executes tasks corresponding to C++ code that completes an asynchronous request, including blocking I/O and CPU-intensive work.


    То есть как я понимаю, как раз event loop и делает поллинг дескрипторов ( + исполняет js-колбэки ), используя вышеупомянутые os-specific сисколлы. А вот треды воркеров исполняют нативные биндинги ака аддоны( cpu-intensive как раз и пишется в виде биндингов ), а также все синхронные I/O вроде readFileSync и т.д. .

    Но может быть я что-то не так понял )
  • Как работает NodeJS?

    Lite_stream
    @Lite_stream Автор вопроса
    Антон Швец, ну вопрос ведь про общий механизм асинхронного I/O, а не как называется библиотека ))
  • Разработка онлайн игры?

    Lite_stream
    @Lite_stream Автор вопроса
    Хорошо, спасибо большое :)
  • Разработка онлайн игры?

    Lite_stream
    @Lite_stream Автор вопроса
    Vito Ombero, могли бы Вы привести парочку примеров, что вы имеете в виду под
    но работы много, потому что движок, по сути, делать надо будет самому
    , пожалуйста
  • Разработка онлайн игры?

    Lite_stream
    @Lite_stream Автор вопроса
    Vito Ombero, просто загуглил 2d движки с минимальной реализацией физики для java
  • Разработка онлайн игры?

    Lite_stream
    @Lite_stream Автор вопроса
    Сетевая часть - пожалуй, самая сложная часть в геймдеве (если это не браузерка, конечно).

    А какая разница, приложение работает внутри браузера или является целевым десктопным ? Ведь браузер не решает никаких проблем, связанных, например, с потерей пакетов или предсказаниях об игровом мире

    Что касается сетевой части, вам придется принимать мучительные решения, как это реализовать наилучшим образом, чтобы игроки были довольны геймплеем в условиях ненулевого лага.

    Ну для этого и реализован лист снапшотов состояний и бинарный протокол :)

    Просто мне кажется, что легче сделать свою простую ( в плане ассортимента функционала, а не простоте алгоритмов ) физику с некоторой кастомизацией для клиент-серверной архитектуры, чем попытаться навесить её на какой-то готовый на физ. движок

    Ну а движки с удобными редакторами вроде Unity использовать только для создания игровых локаций, создавать ( по локации созданной в Unity мир ) xml / json файл и потом скармливать его серверу при старте для инициализации мира
  • Почему параллельный Promise.all() на порядок медленнее, чем последовательные await'ы?

    Lite_stream
    @Lite_stream Автор вопроса
    Eugen, я же объяснил всё в самом вопросе: с последовательными await'ами поскольку мы на каждой итерации ждём завершения предыдущего запроса, то работать будет лишь 1 воркер ( если, конечно, у них не будет каких-то других эвентов ), а во 2-м варинте мы не дожидаемся завершения каждого эвента, мы их только отправляем на 'обработку', соответственно воркеры ( уже не 1, а несколько ) должны расхватать эти эвенты и начать выполнять.
    А если использовать in, то смысл теста теряется, так как, используя такой оператор мы просто будем делать лишь 1-но обращение к БД и оценить разницу между множественными последовательными await'ами и Promise.all не получится
  • Почему параллельный Promise.all() на порядок медленнее, чем последовательные await'ы?

    Lite_stream
    @Lite_stream Автор вопроса
    Eugen, так специально же сделано несколько запросов, вместо одного
  • Почему параллельный Promise.all() на порядок медленнее, чем последовательные await'ы?

    Lite_stream
    @Lite_stream Автор вопроса
    Robur, спасибо за информацию :)
    Пробовал и по отдельности запускать await / all - один и тот же результат
    Сейчас попытаюсь разобраться в драйвере, потому что, как Вы и сказали, скорее всего дело в нём
    Исправил заголовок вопроса )
  • NodeJs( V8 ) или C / C++ для тяжёлых CPU операций ( > 100 Mlsec )?

    Lite_stream
    @Lite_stream Автор вопроса
    VladimirMirand, а так, уже спасибо за ответ :)
  • NodeJs( V8 ) или C / C++ для тяжёлых CPU операций ( > 100 Mlsec )?

    Lite_stream
    @Lite_stream Автор вопроса
    Хорошо, насчёт ассемблера учту

    перетянуть эту часть на C++ и уже строить отдельный мост для интеграции двух приложений между собой (нода + часть на C++)

    Кстати, насчёт этого тоже есть некоторые неясности, например, после какого объёма приложение лучше делать не как аддон для ноды, а как полностью автономную программу с протоколом для общения с ней
  • NodeJs( V8 ) или C / C++ для тяжёлых CPU операций ( > 100 Mlsec )?

    Lite_stream
    @Lite_stream Автор вопроса
    VladimirMirand, ну я в вопросе упомянул примерный уровень абстракции алгоритмов, понятно же что алгоритмы для графов != арифметика. А услышать хотел не про ассемблер, а про то, как часто люди используют интеграцию с / с++ в ноду и является ли это оптимальным подходом
  • NodeJs( V8 ) или C / C++ для тяжёлых CPU операций ( > 100 Mlsec )?

    Lite_stream
    @Lite_stream Автор вопроса
    VladimirMirand, очевидно, что имелось в виду hard, а не hardware
  • Many-to-many как избежать Race conditions?

    Lite_stream
    @Lite_stream Автор вопроса
    Вы имеете в виду критическую секцию для этого участка кода ?