Pular para o conteúdo principal

26 postagens marcadas com "internals"

Ver todas os Marcadores

Propriedades rápidas no V8

· Leitura de 13 minutos
Camillo Bruni ([@camillobruni](https://twitter.com/camillobruni)), também autor de [“Rápido `for`-`in`”](/blog/fast-for-in)

Neste post do blog, gostaríamos de explicar como o V8 lida internamente com as propriedades do JavaScript. Do ponto de vista do JavaScript, são necessárias apenas algumas distinções para as propriedades. Objetos JavaScript se comportam principalmente como dicionários, com chaves de string e objetos arbitrários como valores. No entanto, a especificação trata propriedades indexadas por inteiros e outras propriedades de forma diferente durante a iteração. Fora isso, as diferentes propriedades se comportam praticamente da mesma maneira, independentemente de serem indexadas por inteiros ou não.

Rápido `for`-`in` no V8

· Leitura de 14 minutos
Camillo Bruni ([@camillobruni](http://twitter.com/camillobruni))

for-in é um recurso de linguagem amplamente utilizado presente em muitos frameworks. Apesar de sua ubiquidade, é um dos recursos de linguagem mais obscuros do ponto de vista de implementação. O V8 fez grandes esforços para tornar esse recurso o mais rápido possível. Ao longo do último ano, o for-in tornou-se totalmente compatível com a especificação e até 3 vezes mais rápido, dependendo do contexto.

Iniciando o interpretador Ignition

· Leitura de 4 minutos
Ross McIlroy, Iniciador do Ignition no V8

O V8 e outros motores modernos de JavaScript alcançam sua velocidade através da compilação just-in-time (JIT) de script para código de máquina nativo imediatamente antes da execução. O código é inicialmente compilado por um compilador básico, que pode gerar código de máquina não otimizado rapidamente. O código compilado é analisado durante a execução e, opcionalmente, recompilado dinamicamente com um compilador otimizador mais avançado para obter desempenho máximo. No V8, esse pipeline de execução de script possui uma variedade de casos especiais e condições que exigem uma complexa maquinaria para alternar entre o compilador básico e dois compiladores otimizadores, Crankshaft e TurboFan.

Existe `Math.random()`, e depois existe `Math.random()`

· Leitura de 4 minutos
Yang Guo ([@hashseed](https://twitter.com/hashseed)), engenheiro de software e designer de dados

Math.random() retorna um valor do tipo Number com sinal positivo, maior ou igual a 0, mas menor que 1, escolhido aleatoriamente ou pseudoaleatoriamente com distribuição aproximadamente uniforme dentro desse intervalo, usando um algoritmo ou estratégia dependente da implementação. Esta função não aceita argumentos.

Obtendo coleta de lixo gratuitamente

· Leitura de 10 minutos
Hannes Payer e Ross McIlroy, Idle Garbage Collectors

O desempenho do JavaScript continua sendo um dos aspectos-chave dos valores do Chrome, especialmente quando se trata de proporcionar uma experiência suave. A partir do Chrome 41, o V8 aproveita uma nova técnica para aumentar a responsividade de aplicativos web, ocultando operações caras de gerenciamento de memória dentro de pequenos períodos de tempo ocioso não utilizados. Como resultado, os desenvolvedores web devem esperar rolagem suave e animações fluídas com muito menos atrasos devido à coleta de lixo.