Количество запросов из игрового сервера к среде разработке языка программирования JavaScript в в секунду
~150.000 вызовов среды разработки без учета времени выполнения самого кода (8 ядер дают ~750.000,
подробнее)
Выполнение компиляции происходит на лету (для примера, использование не рационально):
executeString (отдает фиксированную строку ) 140 000 (8 ядер + физ сервер дает x4.5 к скорости)
executeString (отдает получение свойств объекта переданного из PHP) 80 000 (8 ядер + физ сервер дает x5 к скорости)
executeString (отдает выполнение метода объекта переданного из PHP) 40 000 (8 ядер + физ сервер дает x5 к скорости)
execiteString возвращающий анонимную функцию (closure) и вызываемый как метод PHP полученного объекта на 20% быстрее (за счет того что executeString вызван единожды)
Тоже что и выше но код JS запроса заранее компилируется и его можно использовать повторно:
executeScript (отдает фиксированную строку) 600 000 (8 ядер + физ сервер дает x3.5 к скорости)
executeScript (отдает получение свойств объекта переданного из PHP) 300 000 (8 ядер дают x4 прибавку к скорости)
executeScript (отдает выполнение метода объекта переданного из PHP) 60 000 (8 ядер + физ сервер дает x5 к скорости)
executeScript возвращающий анонимную функцию (closure) на 30% медленнее (в зависимости что возвращает, полагаю особенность компиляции closure)
передача параметров из PHP 700 000 / свойство (8 ядер дают лишь x2.5 прибавку к скорости)
Заметки:
- Добавлять новые значения из PHP в V8js - медленно, для экономии времени добавление новых данных можно передать в пространство V8js объект один раз (тк он передастся по ссылке) , а в нем самом уже из PHP менять свойства (это создаст некое хранилище посредник) но свойства должны быть обязательно статичными в этом объекте
- В данной технологии PHP и V8js делят некое общее хранилище памяти однако в отличие от LUA объект передается по ссылке и сразу доступен.