Я нашел bunnymark для холста Javascript здесь.
Теперь, конечно, я понимаю, что их рендеринг по умолчанию использует webGL, но пока меня интересует только собственная производительность 2D-контекста. Я отключил webGL на firefox и после нереста 16500 кроликов, счетчик показал FPS из 25. Я решил написать свой собственный очень простой цикл рендеринга, чтобы увидеть, сколько добавочных Pixi добавлено. К моему удивлению, я получил только FPS 20.
Мой примерно эквивалент JSFiddle.
Итак, я решил изучить здесь источник , и, похоже, это не волшебство в коде рендеринга:
do
{
transform = displayObject.worldTransform;
...
if(displayObject instanceof PIXI.Sprite)
{
var frame = displayObject.texture.frame;
if(frame)
{
context.globalAlpha = displayObject.worldAlpha;
context.setTransform(transform[0], transform[3], transform[1], transform[4], transform[2], transform[5]);
context.drawImage(displayObject.texture.baseTexture.source,
frame.x,
frame.y,
frame.width,
frame.height,
(displayObject.anchor.x) * -frame.width,
(displayObject.anchor.y) * -frame.height,
frame.width,
frame.height);
}
}
Любопытно, что, по-видимому, они используют связанный список для своего цикла рендеринга, а профиль в обоих приложениях показывает, что, хотя моя версия выделяет одинаковое количество процессорного времени на кадр, их реализация показывает использование процессора в шипах.
Мои знания заканчиваются здесь, к сожалению, и мне любопытно, сможет ли кто-нибудь пролить свет на происходящее.