William Grasel PRO
Desenvolvedor Web, Google Developer Expert, Microsoft Most Valuable Professional, palestrante, consultor e coordenador do AngularSP.
function Point(x, y) {
this.X = x;
this.Y = y;
}
function Point(x, y) {
this.X = x;
this.Y = y;
}
var p1 = new Point(11, 22);
function Point(x, y) {
this.X = x; // classe oculta A criada
this.Y = y;
}
var p1 = new Point(11, 22);
function Point(x, y) {
this.X = x; // classe oculta A criada
this.Y = y; // classe oculta B criada
}
var p1 = new Point(11, 22);
function Point(x, y) {
this.X = x; // classe oculta A criada
this.Y = y; // classe oculta B criada
}
var p1 = new Point(11, 22); // usando classe oculta B
function Point(x, y) {
this.X = x; // classe oculta A criada
this.Y = y; // classe oculta B criada
}
var p1 = new Point(11, 22); // usando classe oculta B
var p2 = new Point(33, 44);
function Point(x, y) {
this.X = x; // classe oculta A criada
this.Y = y; // classe oculta B criada
}
var p1 = new Point(11, 22); // usando classe oculta B
var p2 = new Point(33, 44); // usando classe oculta B
function Point(x, y) {
this.X = x; // classe oculta A criada
this.Y = y; // classe oculta B criada
}
var p1 = new Point(11, 22); // usando classe oculta B
var p2 = new Point(33, 44); // usando classe oculta B
p1.Z = 55;
function Point(x, y) {
this.X = x; // classe oculta A criada
this.Y = y; // classe oculta B criada
}
var p1 = new Point(11, 22); // usando classe oculta B
var p2 = new Point(33, 44); // usando classe oculta B
p1.Z = 55; // classe oculta C criada
function Point(x, y) {
this.X = x; // classe oculta A criada
this.Y = y; // classe oculta B criada
}
var p1 = new Point(11, 22); // usando classe oculta B
var p2 = new Point(33, 44); // usando classe oculta B
p1.Z = 55; // classe oculta C criada
// p1 e p2 agora usam classes ocultas diferentes!
Point A |
---|
X |
Point B |
---|
X |
Y |
Point C |
---|
X |
Y |
Z |
Construa objetos previsíveis
Servidos em dois sabores:
let a = new Array();
let a = new Array();
// Nada alocado, assumindo Classe Oculta de Inteiros
let a = new Array();
// Nada alocado, assumindo Classe Oculta de Inteiros
a[0] = 77; // Primeira alocação
let a = new Array();
// Nada alocado, assumindo Classe Oculta de Inteiros
a[0] = 77; // Primeira alocação
a[1] = 88;
let a = new Array();
// Nada alocado, assumindo Classe Oculta de Inteiros
a[0] = 77; // Primeira alocação
a[1] = 88;
a[2] = 0.5; // Mudança de Classse Oculta... Realoca
let a = new Array();
// Nada alocado, assumindo Classe Oculta de Inteiros
a[0] = 77; // Primeira alocação
a[1] = 88;
a[2] = 0.5; // Mudança de Classse Oculta... Realoca
a[3] = true; // Mudança de Classse Oculta... Realoca
// Veja pela linha de comando o que foi otimizado:
$ node --trace-opt primes.js
// Execute o Chrome pela linha de comando para ver o mesmo:
$ "/Applications/.../Google Chrome" --js-flags="--trace-opt"
$ node --trace-bailout primes.js
function codigoPerformatico() {
// coloque aqui o código que pode ser otimizado
}
try {
codigoPerformatico()
} catch (e) { }
$ node --trace-deopt primes.js
By William Grasel
Desenvolvedor Web, Google Developer Expert, Microsoft Most Valuable Professional, palestrante, consultor e coordenador do AngularSP.