@JSlang

Страница 1022 из 2237
Дмитрий
30.06.2017
16:01:39
и будет тебе асинхронное выполнение

Konstantin
30.06.2017
16:01:40
Боже
хроани Королеву

Сделай просто for с await
так с эвэйт(промисами) понятно. хочу сделать именно с генераторами

Дмитрий
30.06.2017
16:02:06
Ещё раз напоминаю, что генераторы в жс не для асинхронности

Google
Konstantin
30.06.2017
16:02:08
это для изучения, а не как реализация

Дмитрий
30.06.2017
16:02:45
Асинхронность на генераторах — это уже прошлая эпоха вообще)

Konstantin
30.06.2017
16:03:20
https://github.com/tc39/proposal-async-iteration

Каїн
30.06.2017
16:03:53
Для изучения '''for(let promise of promises) await promise '''

Konstantin
30.06.2017
16:04:34
Асинхронность на генераторах — это уже прошлая эпоха вообще)
тоесть ты предлагаешь для быстрого обхода массива юзать обычный цикл, если надо + промисы/асинки. Генераторы не юзать вообще для этого?

Дмитрий
30.06.2017
16:05:09
Нет

Точнее, кейс генераторов вообще в другом

Если ты делаешь кастомную итерируемую структуру, то там сам собой будет генератор

Konstantin
30.06.2017
16:08:09
Не, у меня цель сделать мега-быстрый нормализатор данных в массиве, например массив объектов 1кк.

Дмитрий
30.06.2017
16:08:34
Достаточно обычного .map

Konstantin
30.06.2017
16:08:40
и мне надо привести его к виду, где все объекты гарантированны имею/т правильную структуру и если не подходят - удалить

Достаточно обычного .map
мап на 1кк данных на клиентской машине?

это ж вечность будет, если он вообще не повесит его

Google
Дмитрий
30.06.2017
16:09:26
мап на 1кк данных на клиентской машине?
Это не питон, тут всё нормально со скоростью ;)

Сергей
30.06.2017
16:10:15
Konstantin
30.06.2017
16:10:25
Олег
30.06.2017
16:10:46
Громкое заявление

Konstantin
30.06.2017
16:10:58
Громкое заявление
это уже провернно-перепроверненно

иногда (ИНОГДА) быстрее оказывается while

но это случайность :)

Олег
30.06.2017
16:11:23
For быстрее же
От имплементации не зависит?)

Дмитрий
30.06.2017
16:11:35
For быстрее же
В случае таких высокоуровневых замыслов с for он быстрее напишет тонну лапши

Дмитрий
30.06.2017
16:11:53
Ища проблемы совсем не там откуда они придут

Олег
30.06.2017
16:12:10
Не одним v8 едины

Konstantin
30.06.2017
16:12:13
В случае таких высокоуровневых замыслов с for он быстрее напишет тонну лапши
а если б эта тонна лапши еще и быстро обрабатывалась --- было в агонь!

Олег
30.06.2017
16:12:15
Пока что)

Сергей
30.06.2017
16:12:47
Не одним v8 едины
Другое хз. Ибо пишу под электрон, хром и ноду

Konstantin
30.06.2017
16:13:00
Ну ок, какой кейс генератор (func*) выполняет лучше всего?

Дмитрий
30.06.2017
16:13:01
Которая будет медленнее. Я согласен
Сначала делаешь чтобы работало Потом делаешь чтобы быстро Потом делаешь чтобы правильно Попытка решать эти проблемы в другом порядке будет довольно предсказуемой

Кастомные итерируемые структуры

Google
Konstantin
30.06.2017
16:13:51
Кастомные итерируемые структуры
ну таких у меня есть :) но я там генераторы не юзаю

Дмитрий
30.06.2017
16:14:01
Нет, таких у тебя нет

Сергей
30.06.2017
16:14:10
У меня скоро цитатник от монады соберётся

Дмитрий
30.06.2017
16:14:28
?

ну таких у меня есть :) но я там генераторы не юзаю
Эти две фразы друг другу противоречат

by design

Konstantin
30.06.2017
16:15:13
ок, почитаю еще

Дмитрий
30.06.2017
16:15:19
Хотя не, ты конечно можешь имплементировать iterator protocol руками, но это довольно тупо)

Konstantin
30.06.2017
16:15:49
Хотя не, ты конечно можешь имплементировать iterator protocol руками, но это довольно тупо)
ну значит я довольно тупо это сделал, зато работает быстро.

Сергей
30.06.2017
16:15:55
Хотя не, ты конечно можешь имплементировать iterator protocol руками, но это довольно тупо)
У меня есть такой знакомый. Который зачем-то многое руками пишет

Konstantin
30.06.2017
16:17:17
Дмитрий
30.06.2017
16:18:15
class IterableTree { parent: IterableTree leftChild: IterableTree rightChild: IterableTree data: Array<any> * [Symbol.iterator]() { yield* this.data yield* this.leftChild // (!!!) yield* this.rightChild } }

Такой объект поддерживает for of и spread оператор и разворачивает находящиеся в нём данные (свой список и списки дочерних нод) так, как будет удобнее

Konstantin
30.06.2017
16:20:27
так генератор тоже поддерживает for..of

Дмитрий
30.06.2017
16:20:41
Кстати из этого следует один важный для твоей затеи факт

Что нормальный человеческий for of котый я тебе предлагаю с самого начала, и есть твой генератор, только в нормальной форме

Google
Konstantin
30.06.2017
16:21:53
а как структура получается --- двухсвязный список

это ж значит, что можно юзать более интересные алгоритмы. хотя я не уверен как это подружится с исходным массивом

Дмитрий
30.06.2017
16:22:42
Как опишешь — так и получается, там вообще всё на что хватит фантазии может быть)

Хоть heap, хоть double linked list, хоть что)

Konstantin
30.06.2017
16:23:29
ну будет странно описывать граф, а изначально он массив ...

... и потом опять в массив

Дмитрий
30.06.2017
16:24:13
Это не массив

Это Iterable

Admin
ERROR: S client not available

Konstantin
30.06.2017
16:24:51
array -> iterable -> array

изначально приходит массив, затем я с ним че-то делаю итератором, потом обратно в массив

Или я уже че-т не понимаю?

Дмитрий
30.06.2017
16:25:40
Я не решал твою задачу)

Я тебе показывал кейс в котором используются генераторы)

Konstantin
30.06.2017
16:25:58
Дмитрий
30.06.2017
16:26:02
Блядь

Сейчас

Konstantin
30.06.2017
16:26:08
Кстати, важный нюанс --- все происходит на клиентской машине

а она может быть слабая и галимая

Google
Дмитрий
30.06.2017
16:28:19
Монопенисуально)

Konstantin
30.06.2017
16:28:37
Дмитрий
30.06.2017
16:29:30
Просто сделай обработку данных пачками, чтобы за раз был лаг не более установленных рамок

И в воркер их

Можно сразу в пять)

Дмитрий
30.06.2017
16:30:39
?

Dmitriy
30.06.2017
16:40:33
Сначала делаешь чтобы работало Потом делаешь чтобы быстро Потом делаешь чтобы правильно Попытка решать эти проблемы в другом порядке будет довольно предсказуемой
Пожалуйста, прошу простить что запоздал и уже оффтоп, но вот мне кажется, что если шатл летит не в ту сторону, то смысла в его скорости никакого. Разве не чтоб 1. Работало 2. Правильно 3. Быстро ? Т.е. оптимизации же обычно в самом конце

Winni
30.06.2017
16:42:19
Если работает не правильно, то это не работает

это как если решать задачу по тест кейсам, и твой код будет работать только на первом, в котором на вход undefined

Dmitriy
30.06.2017
16:46:53
а, тут под "правильно" имелось ввиду "не говнокод" наверное

Ivan
30.06.2017
17:11:06
Есть какие-нибудь прогнозы по поводу релиза telegram-mtproto? @ZeroBias

А то @alpha в проекте как-то стремно Может чем помочь? Не вижу роадмап

shadowjack
30.06.2017
17:13:34
как красиво проверить что все ключи и значения одного объекта имеются в другом?

типа f({a: 1, b:2, c:3}, {a:1, c:3}) -> true f({a:1, b:2, c:3}, {a: 3}) -> false

Дмитрий
30.06.2017
17:16:12
А то @alpha в проекте как-то стремно Может чем помочь? Не вижу роадмап
Я там обхожу одно проблемное место в авторизации, как только его починю — будет нормальный релиз и роадмап, потому что это последний серьезный затык из всей череды был Доделал сейчас нужные изменения в архитектуре, сейчас буду пробовать интегрировать всё это

? гриб
30.06.2017
17:23:43


Страница 1022 из 2237