Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [node.js] async/await perfomance / 7 сообщений из 7, страница 1 из 1
13.03.2019, 19:06
    #39785565
spider13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[node.js] async/await perfomance
Версия v11.10.0
Неожиданные результаты от сравнения производительности выполнения обычной функции и async/await

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
'use strict';

function sss() {
	var t = 0;
	var t = 555 + t;
	console.log(t);
}

async function sss2() {
	var t = 0;
	var t = 555 + t;
	console.log(t);
}

async function main() {
	var s = process.hrtime();
	for(let index = 0; index < 5000; index++) {
		sss();
	}
	var e = process.hrtime(s);

	var s2 = process.hrtime();
	for(let index = 0; index < 5000; index++) {
		await sss2();
	}
	var e2 = process.hrtime(s2);
	console.log(((e[0] * 1e3) + e[1]) * 1e-6);
	console.log(((e2[0] * 1e3) + e2[1]) * 1e-6);
}

main();



Результаты след:

...
555
555
538.488101
497.19900099999995

Не совсем понятно каким образом через await функция выполняется быстрее. Ожидал совсем обратного.
Почему через async/await работает чуть быстрее?
...
Рейтинг: 0 / 0
25.03.2019, 06:39
    #39790726
Лысый дядька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[node.js] async/await perfomance
spider13,

Потому что этот код некорректен. Я не знаю в каком браузере у вас это исполняется, но нормальный движок такой код исполнять не должен вовсе, потому что вы применяете await к функции sss2(), которая не возвращает промис. Сафари, например, на этиот код говорит следующее
Unhandled Promise Rejection: ReferenceError: Can't find variable: process
...
Рейтинг: 0 / 0
26.03.2019, 10:03
    #39791309
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[node.js] async/await perfomance
Лысый дядька,

Поддержу
должно возвращать промис ведь await это синтаксический сахар

Код: javascript
1.
2.
3.
4.
5.
6.
7.
await asynhoperation();
nextcode

Это эквивалент 
Promise.then(()=>{nextcode});

Только с await более изящно выглядит в коде.
...
Рейтинг: 0 / 0
27.03.2019, 14:59
    #39792376
spider13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[node.js] async/await perfomance
Лысый дядькаspider13,

Потому что этот код некорректен. Я не знаю в каком браузере у вас это исполняется, но нормальный движок такой код исполнять не должен вовсе, потому что вы применяете await к функции sss2(), которая не возвращает промис. Сафари, например, на этиот код говорит следующее
Unhandled Promise Rejection: ReferenceError: Can't find variable: process

В старых стандартах JS - да, но в новых выполняется даже:
Код: javascript
1.
var x = await 5;



Приведенный код корректно выполняется в node.js версии 11
И в последних версия chrome
...
Рейтинг: 0 / 0
27.03.2019, 15:08
    #39792381
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[node.js] async/await perfomance
авторпотому что вы применяете await к функции sss2(), которая не возвращает промис

Нифига, это валидный код. В ТайпСкрипте все отлично выполняется без ошибок. А они жестко придерживаются стандартов и проверяют.
...
Рейтинг: 0 / 0
27.03.2019, 15:08
    #39792382
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[node.js] async/await perfomance
Мне тоже это показалось первое время дико, но каким-то боком гениальные архитекторы жаваскрипта решили что - а пусть будет :)
...
Рейтинг: 0 / 0
27.03.2019, 15:46
    #39792419
spider13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[node.js] async/await perfomance
privateМне тоже это показалось первое время дико, но каким-то боком гениальные архитекторы жаваскрипта решили что - а пусть будет :)

На самом деле решение довольно хорошее и некоторые фреймворки это уже подхватили, лично я использую hapi, и там это решение применяется для всех колбеков.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [node.js] async/await perfomance / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]