@JSlang

Страница 1047 из 2237
Дмитрий
07.07.2017
08:09:48
Я просто смотрел исходники V8, что там у лисы я хз

Вишневый чай
07.07.2017
08:10:20
ну у лисы как то равномернее

Sergey
07.07.2017
08:10:25
Ну будет у тебя на выходе 10 undefined Но подход с проверками и пушем от этого не изменится)
Я это понимаю. Не понимаю зачем они это проверку туда вообще всунули

Дмитрий
07.07.2017
08:10:30
Спека

Google
Gkio
07.07.2017
08:10:37
https://runkit.com/gkio/595f3ce73133a70012debd47

Дмитрий
07.07.2017
08:10:52
А в V8 функция на обычном жс (не C++, как многие считают) и не составило труда просто посмотреть, что в ней неоптимально

Sergey
07.07.2017
08:11:23
Спека
В спеке JS такое написано?

Дмитрий
07.07.2017
08:11:28
Да

По спеке ты обязан проверить и пропустить пустые элементы

Sergey
07.07.2017
08:11:54
Тогда тем более вопрос к тому кто эту спеку писал )

Дмитрий
07.07.2017
08:12:26
Ну в ней очень грамотный подход, который на коротком масштабе просто не оценить)

Спека — это то, что закладывается сразу на десятилетия, и мыслить нужно соответствующими категориями)

Sergey
07.07.2017
08:13:38
Ну в ней очень грамотный подход, который на коротком масштабе просто не оценить)
Если не лень обьясни или дай ссылку где почитать почему мап который может вернуть массив не той же длинны что иисходный - хорошая идея

Дмитрий
07.07.2017
08:14:16
Он не массив иной длинны возвращает, я про это не говорил

Он именно что делает проверку и пуш в результаты

Ну будет у тебя на выходе 10 undefined Но подход с проверками и пушем от этого не изменится)

Sergey
07.07.2017
08:14:58
Он именно что делает проверку и пуш в результаты
При каждом новом элементе проверяют, не null ли он, если нет — то делают push в массив результатов

Google
Дмитрий
07.07.2017
08:15:04
Да

Sergey
07.07.2017
08:15:12
if(!null) push

Дмитрий
07.07.2017
08:15:30
Про вторую ветку условия я ничего не говорил, потому что это не относилось к сути

Sergey
07.07.2017
08:15:59
Так. Пойду исходник почитаю. А то ты меня запутал )

Дмитрий
07.07.2017
08:17:56
Кароч, в массивах бывают дырки. [,,,,,,,,10] Спека обязывает тебя не вызывать функцию, если при map встречается такой пропуск

Sergey
07.07.2017
08:20:25
Повторю свой вопрос - зачем? )

Ну вызвал ты функцию с undefined в качестве параметра. Ничего страшного же не произойдет.

Вишневый чай
07.07.2017
08:23:22
будет лишний вызов функции же

проверить на Null дешевле

Дмитрий
07.07.2017
08:26:24
Пропускать индекс

Sergey
07.07.2017
08:26:36
будет лишний вызов функции же
Только в том случае если у тебя большой массив с кучей дырок. По факту я с таким сталкивался пару раз от силы

Sergey
07.07.2017
08:27:11
Значит твоя функция на вход должна принимать функции

Иначе зачем ты будешь делать мап по этому массиву?

https://github.com/nodejs/node/blob/master/deps/v8/src/js/array.js#L1036

Sergey
07.07.2017
08:28:18
микрооптимизации тоже оптимизации
Ну по факту это не оптимизация а наоборот

Google
Дмитрий
07.07.2017
08:28:58
Ну

Sergey
07.07.2017
08:29:42
А там undefined
Значит ты словишь такой баг у себя в коде и в своем обработчике сделаешь проверку на undefined

Дмитрий
07.07.2017
08:30:08
Супер предложение ??

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

Sergey
07.07.2017
08:30:59
Супер предложение это писать свои костыли для того что бы мап был быстрым )

Дмитрий
07.07.2017
08:31:17
Но так как такое пока встречается прямо скажем, нечасто, реально написать реализацию без этой проверки, которая будет быстрее нативного мап

Супер предложение это писать свои костыли для того что бы мап был быстрым )
Я не понимаю, что ты мне пытаешься предъявить? Что я написал реализацию быстрее нативной? Извини, не подумал

Sergey
07.07.2017
08:32:57
Лично тебе я ничего не предьявляю. Просто пытаюсь понять почему тот кто писал спеку для языка сделал такую "оптимизацию" Просто ты единственный кто эту оптимизацию защищаешь )

Sergey
07.07.2017
08:34:05
Да нет же. Говорит так должно быть )

Artyom
07.07.2017
08:34:20
А если while(ln--) { arr[ln] && fn(arr[ln], ln) } Какова скорость, интересно

Вишневый чай
07.07.2017
08:34:23
Да нет же. Говорит так должно быть )
ну если бы ее небыло нечего было бы вырезать

Дмитрий
07.07.2017
08:34:40
Artyom
07.07.2017
08:35:06
Дмитрий
07.07.2017
08:35:43
Сейчас проверю) Но общий принцип такой — не заставляй движок перебирать варианты и приводить к типу

Artyom
07.07.2017
08:35:44
Где об этом почитать, посоветуйте уже, наконец, книгу хорошую

Дмитрий
07.07.2017
08:36:04
Хз, эт опыт ? Я много времени потратил на такие исследования)

Google
Sergey
07.07.2017
08:36:16
Ну и кстати оно там в итоге в плюсы уходит.

На уровне js в цикле никаких проверок нет

Artyom
07.07.2017
08:37:18
Сейчас проверю) Но общий принцип такой — не заставляй движок перебирать варианты и приводить к типу
А побитовую проверку можно сделать? Как выглядят undefined и null при обращении к ним как к двоичной структуре? Что-то я туплю, как это вообще сделать....

Sergey
07.07.2017
08:37:31
А нет. есть if (i in array) {

Дмитрий
07.07.2017
08:37:35
null | 0

Я тащемта это в коде примера и юзаю, но с другой целью)

Алексей
07.07.2017
08:38:22
Народ, подскажите плиз , какая сейчас топовая библиотека для работы с мобильными событиями touch мульти тач , мув и тд?

Admin
ERROR: S client not available

Artyom
07.07.2017
08:43:53
Что быстрее ~~undefined === 0 или undefined === 0?

i
07.07.2017
08:45:52
Что быстрее ~~undefined === 0 или undefined === 0?
Второй вариант, его на 2 символа быстрее можно написать

Сергей
07.07.2017
08:46:46
Что быстрее ~~undefined === 0 или undefined === 0?
ты разницу не чувствуешь видимо

эти выражения делают разные вещи

Artyom
07.07.2017
08:47:01
эти выражения делают разные вещи
Ой, вот так, в смысле ~~null == 0 или null == 0

Дмитрий
07.07.2017
08:48:20
Блин, какой же jsperf уебанский

Прямо за гранью

Artyom
07.07.2017
08:49:13
Поэтому я спрашиваю, а не пишу сам =D

Дмитрий
07.07.2017
08:50:36
Он мне так и не дал нормально добавить дополнительные тесты

Artyom
07.07.2017
08:51:08
Ой, вот так, в смысле ~~null == 0 или null == 0
Точнее даже так ~~null === 0 или null == 0 !!!

Дмитрий
07.07.2017
08:51:31
Оба варианта бессмыссленны)

Google
Дмитрий
07.07.2017
08:51:48
Короче, четвёрая ревизия показывает, что разница несущественна, но всё же лучше не заставлять движок приводить типы

Artyom
07.07.2017
08:51:59
Вопрос в том, как приводятся типы в == и может ли ~~ быть быстрее?

REWHEX
07.07.2017
08:52:11
Ой, вот так, в смысле ~~null == 0 или null == 0
Что быстрее, понять что такое ~~null или выкинуть телефон в окно? Кажется мне пора выкидывать телефон

Дмитрий
07.07.2017
08:53:00
~~ быстрее всех приводит строку к числу, в остальных случаях смысла в нём никакого

Повторюсь, не заставляй V8 заниматься приведением типов за тебя

Если тебе нужно убедиться что значение не пропущено, то просто сделай !== undefined

Artyom
07.07.2017
08:53:49


REWHEX
07.07.2017
08:54:03
Чииво

Это js?

i
07.07.2017
08:54:41
Мне кажется, что побитовое не в языках с динамической типизаций имеет вообще непредсказуемый результат

Дмитрий
07.07.2017
08:56:19
(!+[]+[]+![]).length = 9

Enjoy your js

Artyom
07.07.2017
08:59:41
?

Норм

i
07.07.2017
09:00:59
Классический js как он есть

Vyacheslav
07.07.2017
09:07:58
так. напишу еще раз. есть такой массив: [ {"order": 1, "task": 1}, {"order": 2, "task": 2}, {"order": 3, "task": 3}, {"order": 1, "task": 4}, {"order": 2, "task": 5}, {"order": 1, "task": 6} ]; мне надо сделать из него строку: 'order1': 3, 'order2': 2, 'order3': 1 решение уже было, но не совсем то. мне нужна именно строка а не массив с значениями(правильными, кстати говоря) вот предыдущее решение: arr.reduce((acc, { order }) => { acc[order] = (acc[order] || 0) + 1; result += "'state" + acc[order]; return acc; }, {})

Сергей
07.07.2017
09:11:50
Кто там убеждал что в чистом Js промисы синхронны

это нихуя не правда

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