Size: a a a

2020 December 03

МТ

Марк Танащук... in Svelte [svelt]
Vladimir Panimaskin
нигде, человек себе что-то придумал, сам героически справился с поставленной задачей и решил поделиться с миром
У каждого свои задачи и возможно в определенном кейсе этот вариант оптимально подходит.

Вопрос в том - насколько этот кейс частый.
источник

ON

Oleg N in Svelte [svelt]
Lupusregina[beta]
если  у нас большинство функци синхронны, то прибавка к скорости вполне себе 40 раз
если так заморачиваться, то можно и калбечный подход попробовать, в теории будет даже быстрее
источник

L

Lupusregina[beta] in Svelte [svelt]
Oleg N
если так заморачиваться, то можно и калбечный подход попробовать, в теории будет даже быстрее
быстрее канечно. но это каллбехелл будет
источник

ON

Oleg N in Svelte [svelt]
Lupusregina[beta]
быстрее канечно. но это каллбехелл будет
а тут итератор хелл
источник

ON

Oleg N in Svelte [svelt]
т.к. итеатор должен быть на каждом уровне дерева
источник

L

Lupusregina[beta] in Svelte [svelt]
Oleg N
а тут итератор хелл
так нет же. у нас вместо await yield* и вместо async function function* и все
источник

L

Lupusregina[beta] in Svelte [svelt]
такойже псевдо синхронный код получается
источник

L

Lupusregina[beta] in Svelte [svelt]
как и при использовании await
источник

AP

Alexander Ponomarev in Svelte [svelt]
Oleg N
т.к. итеатор должен быть на каждом уровне дерева
да не должен он быть на каждом уровне, как и не должен быть async на каждом уровне чтобы использовать асинхронную функцию в глубине
источник

VP

Vladimir Panimaskin in Svelte [svelt]
Марк Танащук
У каждого свои задачи и возможно в определенном кейсе этот вариант оптимально подходит.

Вопрос в том - насколько этот кейс частый.
как только у вас возникнет задача, где будет требоваться настолько перформансный перформанс, у вас будут другие проблемы, которые решать вы будете никак не генераторами
источник

ON

Oleg N in Svelte [svelt]
Alexander Ponomarev
да не должен он быть на каждом уровне, как и не должен быть async на каждом уровне чтобы использовать асинхронную функцию в глубине
тогда флоу порвется
источник

AP

Alexander Ponomarev in Svelte [svelt]
какой флоу
источник

L

Lupusregina[beta] in Svelte [svelt]
Alexander Ponomarev
да не должен он быть на каждом уровне, как и не должен быть async на каждом уровне чтобы использовать асинхронную функцию в глубине
мдэ(
источник

ON

Oleg N in Svelte [svelt]
Vladimir Panimaskin
как только у вас возникнет задача, где будет требоваться настолько перформансный перформанс, у вас будут другие проблемы, которые решать вы будете никак не генераторами
👍
источник

AP

Alexander Ponomarev in Svelte [svelt]
async function get() { return fetch(URL); }

function flow() { return get() }

async function log() { console.log(await flow()) };

log()
Где тут флоу порвался?
источник

L

Lupusregina[beta] in Svelte [svelt]
Alexander Ponomarev
async function get() { return fetch(URL); }

function flow() { return get() }

async function log() { console.log(await flow()) };

log()
Где тут флоу порвался?
ну ты понимаешь что ты пробросил до верха промис? где асинхронная функция
источник

L

Lupusregina[beta] in Svelte [svelt]
а если тебе надо с этим гет работать внизу, на месте
источник

МТ

Марк Танащук... in Svelte [svelt]
Vladimir Panimaskin
как только у вас возникнет задача, где будет требоваться настолько перформансный перформанс, у вас будут другие проблемы, которые решать вы будете никак не генераторами
Всяко лучше (если быстро) оптимизировать такого рода код и получить 50-150мс бесплатно, чтобы меньше тратить время на до-оптимизацию основного так то
источник

VP

Vladimir Panimaskin in Svelte [svelt]
Марк Танащук
Всяко лучше (если быстро) оптимизировать такого рода код и получить 50-150мс бесплатно, чтобы меньше тратить время на до-оптимизацию основного так то
нет
источник

IS

Ivan Shport in Svelte [svelt]
Lupusregina[beta]
function* sum(a, b) {
 return a + b
}
function* test2() {
 console.time('sum')
 let summary = 0
 for(let i = 0; i < 1e6; i++) {
   summary += yield* sum(i, i)
 }
 console.timeEnd('sum')
 console.log({summary})
}
asyncWrapper(test2)

function sumSync(a, b) { return a + b }
function test2Sync() {
 console.time('sumSync')
 let summary = 0
 for(let i = 0; i < 1e6; i++) {
   summary += sumSync(i, i)
 }
 console.timeEnd('sumSync')
 console.log({summary})
}
test2Sync()

async function sumAsync(a, b) { return a + b }
async function test2Async() {
 console.time('test2Async')
 let summary = 0
 for(let i = 0; i < 1e6; i++) {
   summary += await sumAsync(i, i)
 }
 console.timeEnd('test2Async')
 console.log({summary})
}
test2Async()
А что если при случайной интерации в теле функции суммы была бы асинхронная операция, мы же не всегда знаем с какими коллбеками мы работаем. В таком случае тебе придётся все вызовы оборачивать промисами. Нет?
источник