;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Vini Jr. x Neymar: números detalham temporada superior da estrela do Real

Neymar e Vini Jr. posam juntos: comparação entre os dois mostra jogador do Real Madrid em melhor fase - Instagram
Neymar e Vini Jr. posam juntos: comparação entre os dois mostra jogador do Real Madrid em melhor fase Imagem: Instagram

Jeremias Wernek

Do UOL, em Porto Alegre

16/01/2022 04h00

Vini Jr. ou Neymar? A ascensão do camisa 20 do Real Madrid na atual temporada gera a inevitável comparação com o atacante do Paris Saint-Germain. Nos números, o novato leva a melhor em quesitos importantes. E mais: a evolução de Vinicius Jr., na comparação com ele mesmo, salta ainda mais aos olhos.

A análise é da empresa de consultoria Driblab, da Espanha. Segundo o grupo que se debruça em estatísticas de desempenho, Vini Jr. melhorou todas as estatísticas decisivas para um jogador da função. E apresenta índices melhores que Neymar, na atual temporada.

Na temporada 2021/2022, Vini Jr. aumentou a média de dribles certos: saltou de 1,86 por jogo para 3,03 em média por partida. Saltou, em toques na área adversária, de 5,85 para 8,06 por atuação. E aumentou, também, a média de es decisivos em cada compromisso: de 1,08 para 1,52.

"É evidente que Vinicius, pelo trabalho que fez e pela confiança em si mesmo, melhorou absolutamente em todas as estatísticas consideradas relevantes para um atacante, um extrema. Ele dribla mais, gera mais situações de gol, dá mais toques na área em cada jogo, faz progressões com a bola mais vezes, gera mais perigo e cria mais ocasiões. Participa mais do jogo. Realiza mais aqueles es finais, que terminam em uma conclusão. Ou seja, esta temporada é um ponto de inflexão na carreira dele", frisa Alejandro Arroyo, integrante do projeto Driblab.

A empresa sediada em Madrid presta consultoria para jogadores, empresários e clubes. Com os relatórios, analisa mais do que os números absolutos. E assim, entende que o salto de Vinicius Jr. merece mais atenção ainda.

"A análise com uma visão mais reflexiva mostra que, no caso de Vinicius Jr., quanto mais ele dribla e desequilibra, mais adquire calma e tranquilidade diante do goleiro. Na temporada ada, ele se precipitava e falhava em muitíssimas ocasiões. Houve uma mudança de 180º", analisa Arroyo.

E Neymar?

A comparação virou gráfico. A análise dos números mostra que Vinicius Jr. produziu melhores médias do que Neymar em atributos decisivos. O camisa 10 do PSG atualmente se recupera de lesão no tornozelo. A previsão de retorno é para fevereiro, nas oitavas de final da Liga dos Campeões. Justamente contra o Real Madrid.

Na análise, Vini Jr. tem melhor índice em atributos como conclusões, toques na área adversária e es decisivos em jogo aberto.

Neymar é superior em aspectos como progressão com a bola, dribles certos, assistências esperadas (em derivação da métrica gols esperados, com a sigla xG), e em jogo aberto para a área adversária.

"A comparação é interessante por dois motivos, acredito. Primeiro, eles jogam na mesma área do campo e precisam muito da bola para liderar o ataque. Assim, será difícil jogar com os dois. Talvez isso abra debate sobre Vinicius na ponta e Neymar por dentro, por exemplo. Segundo, Neymar já deu declarações sobre Qatar ser a última Copa para ele. Sendo assim, Vini Jr. pode ser o herdeiro da função. Ele é o melhor jogador do campeonato espanhol e já lidera o Real Madrid", resume Alejandro Arroyo.

Veja os números

Gols esperados (xG): Vini Jr. 0,41 x 0,27 Neymar
Finalizações: Vini Jr. 2,76 x 1,99 Neymar
Toques na área adversária: Vini Jr. 8,06 x 5,87 Neymar
Cruzamentos completos: Vini Jr. 0,22 x 0,42 Neymar
e em jogo aberto para a área adversária: Vini Jr. 2,16 x 2,2 Neymar
Assistências esperadas: Vini Jr. 0,16 x 0,26 Neymar
e chave de jogo aberto: Vini Jr. 1,52 x 1,36 Neymar
Dribles com sucesso: Vini Jr. 3,03 x 3,57 Neymar
Progressão com a bola: Vini Jr. 10,9 x 13,5 Neymar
Pressão individual: Vini Jr. 41,7 x 0,21 Neymar