SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
РАЗГОНЯЕМ JS
Антон Плешивцев	

aviasales.ru
МЕТАПОИСК
МЕТАПОИСК
МЕТАПОИСК
МЕТАПОИСК
МЕТАПОИСК
ОКНО ДЖОХАРИ
Известное 	

продавцу
Неизвестное	

продавцу
Известное	

клиенту
Открытое Слепое пятно
Неизвестное	

клиенту
Скрытое Неизвестное
ПРОФИЛИРОВАНИЕ
• Метод пристального взгляда	

• Ручное	

• Инструментальное
СТАТИСТИЧЕСКОЕ
СОБЫТИЙНОЕ
РУЧНОЕ
t = +new Date();
code_to_measure();
time = +new Date() - t;
РУЧНОЕ, НО УДОБНОЕ
function profile(func){
!
var wrapper = function(){
var start = +new Date();
var result = func.apply(null, arguments);
console.log(func.name, +new Date() - start, "ms");
return result;
};
!
return wrapper;
}
РУЧНОЕ, НО УДОБНОЕ
code_to_measure = profile(code_to_measure);
!
code_to_measure();
> code_to_measure 112ms
КОНВЕРСИЯ
Январь Февраль Март Апрель Май
TIP #1
вызов функций
!
var start = +new Date();
var result = func.apply(null, arguments);
console.log(func.name, +new Date() - start, "ms");
switch (args.length) {
case 0: while (++i < l)
(ev = events[i]).callback.call(ev.ctx); return;
case 1: while (++i < l)
(ev = events[i]).callback.call(ev.ctx, a1); return;
case 2: while (++i < l)
(ev = events[i]).callback.call(ev.ctx, a1, a2); return;
case 3: while (++i < l)
(ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;
default: while (++i < l)
(ev = events[i]).callback.apply(ev.ctx, args); return;
}
APPLY & CALL
0
12500000
25000000
37500000
50000000
Apply Call
(количество операций в секунду, больше - лучше)
APPLY & CALL & DIRECT
0
17500000
35000000
52500000
70000000
Apply Call Direct
(количество операций в секунду, больше - лучше)
TIP #2
быстрые таймауты
setTimeout(function test(){
!
…
!
}, 0)
function setZeroTimeout(fn) {
timeouts.push(fn);
window.postMessage("zero-timeout-message", "*");
}
!
window.addEventListener("message", function
handleMessage(event) {
if (event.source == window && event.data ==
messageName) {
//zero timeout
}
} , true)
http://dbaron.org/log/20100309-faster-timeouts
TIP #3
почему тормозит Underscore
_.map = _.collect = function(obj, iterator, context) {
var results = [];
!
if (obj == null) return results;
!
if (nativeMap && obj.map === nativeMap) return
obj.map(iterator, context);
!
each(obj, function(value, index, list) {
results.push(iterator.call(context, value, index,
list));
!
});
return results;
};
map = function(obj, iterator, context) {
if (nativeMap) {
map = function(obj, iterator, context){
return obj.map(iterator);
}
} else {
map = function(obj, iterator, context){
var results = [];
each(obj, function(value, index, list) {
results.push(iterator.call(context, value,
index, list));
});
return results;
}
}
return map(obj, iterator, context);
};
0
3,75
7,5
11,25
15
_.map map
(время работы в среднем, меньше - лучше)
0
4
8
12
16
_.map map lodash.map
(время работы в среднем, меньше - лучше)
TIP #4
самый быстрый цикл
CLASSIC FOR
for (var i = 0; i < arr.length; ++i) {
arr[i];
};
CLASSIC FOR WITH LENGTH
CACHE
for (var i = 0, len = arr.length; i < len; ++i) {
arr[i];
};
REVERSE WHILE
var i = arr.length;
while (i--) {
arr[i];
};
WHILE IMITATING FOR
var i = 0, len = arr.length;
while (i < len) {
arr[i];
i++;
};
0
775
1550
2325
3100
classic for for with cache reverse while while imitating for
Firefox
(количество операций в секунду, больше - лучше)
160
167,5
175
182,5
190
classic for for with cache reverse while while imitating for
Chrome
0
800
1600
2400
3200
classic for for with cache reverse while while imitating for
Firefox Chrome
ПОБЕДИТЕЛЬ
var i = 0, len = arr.length;
while (i < len) {
arr[i];
i++;
};
TIP #5
быстрый доступ к ОП
function(){
document.getElementById('sidebar');
document.getElementById('collections');
document.getElementById('logo');
}
function(){
var d = document;
d.getElementById('sidebar');
d.getElementById('collections');
d.getElementById('logo');
}
0
350
700
1050
1400
До После
(время на цикле 1М, меньше - лучше)
TIP #6
работа с DOM
JQUERY STRING
iframe = $("<iframe src='javascript:false'
name='theiframe'>");
JQUERY CHAIN
iframe = $(‘<iframe>’).attr({
name: 'theiframe',
src: ‘javascript:false'
})
NATIVE JS
iframe = document.createElement('iframe');
iframe.name = 'theiframe';
iframe.src = 'javascript:false';
FUNCTION
iframe = createElement('iframe', {
name: 'theiframe',
src: ‘javascript:false'
});
0
125000
250000
375000
500000
jQuery string jQuery chain Native js Function
(количество операций в секунду, больше - лучше)
TIP #7
самый быстрый фреймворк
0
750
1500
2250
3000
React Angular Mithril vuejs
TIP #8
self vs bind
var self = this;
check(function(){
self.ok();
})
check(function(){
this.ok();
}).bind(this);
0
7500000
15000000
22500000
30000000
Bind self
(количество операций в секунду, больше - лучше)
ПРОФИЛИРУЙТЕ
ЗАМЕРЯЙТЕ
ИЗУЧАЙТЕ
ABOUT
АНТОН ПЛЕШИВЦЕВ	

!
twitter.com/allaud
github.com/allaud
https://www.facebook.com/ant.pl.3
!
!
!
!
!
!
aviasales.ru

Mais conteúdo relacionado

Mais procurados

Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Platonov Sergey
 
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JSFestUA
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияAlexey Paznikov
 
Аскетичная разработка браузера
Аскетичная разработка браузераАскетичная разработка браузера
Аскетичная разработка браузераPlatonov Sergey
 
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...Platonov Sergey
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
 
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияГригорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияSergey Platonov
 
указатель на функцию
указатель на функциюуказатель на функцию
указатель на функциюAleksandr Pavlenko
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Platonov Sergey
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Platonov Sergey
 
Ecma script 6 yevhen diachenko
Ecma script 6 yevhen diachenkoEcma script 6 yevhen diachenko
Ecma script 6 yevhen diachenkoDenis Khabrenko
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Alexey Paznikov
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 

Mais procurados (20)

Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»
 
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
 
Progr labrab-4-2013-c++
Progr labrab-4-2013-c++Progr labrab-4-2013-c++
Progr labrab-4-2013-c++
 
Аскетичная разработка браузера
Аскетичная разработка браузераАскетичная разработка браузера
Аскетичная разработка браузера
 
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
 
Rac
RacRac
Rac
 
Erlang
ErlangErlang
Erlang
 
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияГригорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизация
 
указатель на функцию
указатель на функциюуказатель на функцию
указатель на функцию
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”
 
20110227 csseminar alvor_breslav
20110227 csseminar alvor_breslav20110227 csseminar alvor_breslav
20110227 csseminar alvor_breslav
 
Ecma script 6 yevhen diachenko
Ecma script 6 yevhen diachenkoEcma script 6 yevhen diachenko
Ecma script 6 yevhen diachenko
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 

Destaque

Сколько стоит скорость сайта
Сколько стоит скорость сайтаСколько стоит скорость сайта
Сколько стоит скорость сайтаNikolay Matsievsky
 
Глубокая аналитика скорости сайта
Глубокая аналитика скорости сайтаГлубокая аналитика скорости сайта
Глубокая аналитика скорости сайтаNikolay Matsievsky
 
10 шагов к ускорению сайта
10 шагов к ускорению сайта10 шагов к ускорению сайта
10 шагов к ускорению сайтаNikolay Matsievsky
 
Бюджетные технические средства защиты сайта
Бюджетные технические средства защиты сайтаБюджетные технические средства защиты сайта
Бюджетные технические средства защиты сайтаNikolay Matsievsky
 
Промышленное ускорение сайтов
Промышленное ускорение сайтовПромышленное ускорение сайтов
Промышленное ускорение сайтовNikolay Matsievsky
 
Добавка к конверсии с помощью метрик производительности в интернет-счетчиках
Добавка к конверсии с помощью метрик производительности в интернет-счетчикахДобавка к конверсии с помощью метрик производительности в интернет-счетчиках
Добавка к конверсии с помощью метрик производительности в интернет-счетчикахandrey_travin
 
Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуYandex
 
Отказоустойчивость 99,999% своими руками
Отказоустойчивость 99,999% своими рукамиОтказоустойчивость 99,999% своими руками
Отказоустойчивость 99,999% своими рукамиNikolay Matsievsky
 
SDCH, или новые подходы к увеличению производительности, Дмитрий Маркович (Li...
SDCH, или новые подходы к увеличению производительности, Дмитрий Маркович (Li...SDCH, или новые подходы к увеличению производительности, Дмитрий Маркович (Li...
SDCH, или новые подходы к увеличению производительности, Дмитрий Маркович (Li...Ontico
 
Walmart pagespeed-slide
Walmart pagespeed-slideWalmart pagespeed-slide
Walmart pagespeed-slideBitsytask
 
Аналитика инструментов на сайтах (скорректированная версия)
Аналитика инструментов на сайтах (скорректированная версия)Аналитика инструментов на сайтах (скорректированная версия)
Аналитика инструментов на сайтах (скорректированная версия)InSales
 

Destaque (11)

Сколько стоит скорость сайта
Сколько стоит скорость сайтаСколько стоит скорость сайта
Сколько стоит скорость сайта
 
Глубокая аналитика скорости сайта
Глубокая аналитика скорости сайтаГлубокая аналитика скорости сайта
Глубокая аналитика скорости сайта
 
10 шагов к ускорению сайта
10 шагов к ускорению сайта10 шагов к ускорению сайта
10 шагов к ускорению сайта
 
Бюджетные технические средства защиты сайта
Бюджетные технические средства защиты сайтаБюджетные технические средства защиты сайта
Бюджетные технические средства защиты сайта
 
Промышленное ускорение сайтов
Промышленное ускорение сайтовПромышленное ускорение сайтов
Промышленное ускорение сайтов
 
Добавка к конверсии с помощью метрик производительности в интернет-счетчиках
Добавка к конверсии с помощью метрик производительности в интернет-счетчикахДобавка к конверсии с помощью метрик производительности в интернет-счетчиках
Добавка к конверсии с помощью метрик производительности в интернет-счетчиках
 
Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизу
 
Отказоустойчивость 99,999% своими руками
Отказоустойчивость 99,999% своими рукамиОтказоустойчивость 99,999% своими руками
Отказоустойчивость 99,999% своими руками
 
SDCH, или новые подходы к увеличению производительности, Дмитрий Маркович (Li...
SDCH, или новые подходы к увеличению производительности, Дмитрий Маркович (Li...SDCH, или новые подходы к увеличению производительности, Дмитрий Маркович (Li...
SDCH, или новые подходы к увеличению производительности, Дмитрий Маркович (Li...
 
Walmart pagespeed-slide
Walmart pagespeed-slideWalmart pagespeed-slide
Walmart pagespeed-slide
 
Аналитика инструментов на сайтах (скорректированная версия)
Аналитика инструментов на сайтах (скорректированная версия)Аналитика инструментов на сайтах (скорректированная версия)
Аналитика инструментов на сайтах (скорректированная версия)
 

Semelhante a Повышение конверсии через оптимизацию JS

разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3etyumentcev
 
JavaScript. Loops and functions (in russian)
JavaScript. Loops and functions (in russian)JavaScript. Loops and functions (in russian)
JavaScript. Loops and functions (in russian)Mikhail Davydov
 
пабсаб презентейшн
пабсаб презентейшнпабсаб презентейшн
пабсаб презентейшнAlexey Osipenko
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кодаAndrey Karpov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 
Как выглядит современный фронтенд
Как выглядит современный фронтендКак выглядит современный фронтенд
Как выглядит современный фронтендTimophy Chaptykov
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CГлеб Тарасов
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...pgdayrussia
 
Subprograms in VHDL, Functions in VHDL
Subprograms in VHDL, Functions in VHDLSubprograms in VHDL, Functions in VHDL
Subprograms in VHDL, Functions in VHDLvitaliykulanov
 
Парсим CSS: performance tips & tricks
Парсим CSS: performance tips & tricksПарсим CSS: performance tips & tricks
Парсим CSS: performance tips & tricksRoman Dvornov
 
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидахCodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидахCodeFest
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...Alexey Paznikov
 
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...GeeksLab Odessa
 
PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 

Semelhante a Повышение конверсии через оптимизацию JS (20)

разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
JavaScript. Loops and functions (in russian)
JavaScript. Loops and functions (in russian)JavaScript. Loops and functions (in russian)
JavaScript. Loops and functions (in russian)
 
пабсаб презентейшн
пабсаб презентейшнпабсаб презентейшн
пабсаб презентейшн
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
course js day 2
course js day 2course js day 2
course js day 2
 
Как выглядит современный фронтенд
Как выглядит современный фронтендКак выглядит современный фронтенд
Как выглядит современный фронтенд
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
 
Subprograms in VHDL, Functions in VHDL
Subprograms in VHDL, Functions in VHDLSubprograms in VHDL, Functions in VHDL
Subprograms in VHDL, Functions in VHDL
 
Парсим CSS: performance tips & tricks
Парсим CSS: performance tips & tricksПарсим CSS: performance tips & tricks
Парсим CSS: performance tips & tricks
 
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидахCodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
 
Парсим CSS
Парсим CSSПарсим CSS
Парсим CSS
 
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
 
msumobi2. Лекция 2
msumobi2. Лекция 2msumobi2. Лекция 2
msumobi2. Лекция 2
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 

Mais de Антон Плешивцев (10)

1k speedup
1k speedup1k speedup
1k speedup
 
Es6 good parts
Es6 good partsEs6 good parts
Es6 good parts
 
How to create modern web application (about Virool mobile player)
How to create modern web application (about Virool mobile player)How to create modern web application (about Virool mobile player)
How to create modern web application (about Virool mobile player)
 
CodeFest dirty facts about AngularJS
CodeFest dirty facts about AngularJSCodeFest dirty facts about AngularJS
CodeFest dirty facts about AngularJS
 
Frontend for the win
Frontend for the winFrontend for the win
Frontend for the win
 
как мы сделали поисковой движок
как мы сделали поисковой движоккак мы сделали поисковой движок
как мы сделали поисковой движок
 
Why fp
Why fpWhy fp
Why fp
 
Happydev presentation soa
Happydev presentation soaHappydev presentation soa
Happydev presentation soa
 
Happydev presentation angular
Happydev presentation angularHappydev presentation angular
Happydev presentation angular
 
интерфейсы3 ppt
интерфейсы3 pptинтерфейсы3 ppt
интерфейсы3 ppt
 

Повышение конверсии через оптимизацию JS