DDamager #10041 10 февраля 2017 бросилось в глаза2) Написать функцию, возвращающую второй по величине аргумент массива цифр. Сходу написал это var secondLargest = (arr) => arr.sort((a,b) => a - b)[1]; и сразу же сказал что я всегда забываю, надо ли вычитать a из b или наоборот чтобы отсортировать по убыванию (офк надо было b - a). быстрее будет за O(n) пройтись по массиву и найти нужный элемент, чем делать сортировку за O(nlogn)видно программирование на жаваскрипте сказывается на образе мышления Поделиться сообщением Ссылка на сообщение
suez #10042 10 февраля 2017 Ну при учете того что мой вариант ебашится в 1 строчку, легко читаем/понимаем и самое главное, он оптимизируется внутри v8 просто без проблем (что делает разницу в скорости просто ничтожной), то как бы написание велосипеда с твоим вариантом проигрывает почти по всем параметрам. http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
DDamager #10043 10 февраля 2017 если можно написать лучше по перформансу потратив 1 минуту то почему бы этого не сделатьвот эта парадигма "ебашится в 1 строчку" мне она не понятна Поделиться сообщением Ссылка на сообщение
Rooster #10044 10 февраля 2017 Ну при учете того что мой вариант ебашится в 1 строчку, легко читаем/понимаем и самое главное, он оптимизируется внутри v8 просто без проблем (что делает разницу в скорости просто ничтожной), то как бы написание велосипеда с твоим вариантом проигрывает почти по всем параметрам.А forEach тоже оптимизируется? Он же по дефолту вроде намного медленнее цикла Поделиться сообщением Ссылка на сообщение
TheDeadSkin #10045 10 февраля 2017 Ну при учете того что мой вариант ебашится в 1 строчку, легко читаем/понимаем и самое главное, он оптимизируется внутри v8 просто без проблем (что делает разницу в скорости просто ничтожной), то как бы написание велосипеда с твоим вариантом проигрывает почти по всем параметрам.а в чём именно заключается эта оптимизация для даной ситуации? я сомневаюсь что любая оптимизация уберёт полную сортировку, т.е О значение останется nlogn Поделиться сообщением Ссылка на сообщение
suez #10046 11 февраля 2017 Ну при учете того что мой вариант ебашится в 1 строчку, легко читаем/понимаем и самое главное, он оптимизируется внутри v8 просто без проблем (что делает разницу в скорости просто ничтожной), то как бы написание велосипеда с твоим вариантом проигрывает почти по всем параметрам.А forEach тоже оптимизируется? Он же по дефолту вроде намного медленнее цикла ForEach раньше был заметно медленнее обычного for цикла, сейчас вроде как разница почти минимальна. Про это есть много статей, все сводится к тому, что в 99% случаев надо писать код для людей, ибо v8 просто по максимуму оптимизирует все эти дефолтные методы и результаты получаются почти одни и те же. В некоторых случаях все доходит до того, что сахарные методы могут быть даже теоретически быстрее чем твой йоба-оптимизированный-велосипед, потому-что сам v8 возможно посчитает что не сможет ничем тут помочь и произойдет деоптимизация кода. В общем тут история про то, что не стоит выебываться своими ахуительными алгоритмическими скиллами до тех пор, пока у тебя не будет пруфов что это место действительно создает проблемы с производительностью (привет от первого, и самого важного антипаттерна программирования - premature optimization). http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
PochtiKakLoda #10047 11 февраля 2017 бросилось в глаза2) Написать функцию, возвращающую второй по величине аргумент массива цифр. Сходу написал это var secondLargest = (arr) => arr.sort((a,b) => a - b)[1]; и сразу же сказал что я всегда забываю, надо ли вычитать a из b или наоборот чтобы отсортировать по убыванию (офк надо было b - a). быстрее будет за O(n) пройтись по массиву и найти нужный элемент, чем делать сортировку за O(nlogn)видно программирование на жаваскрипте сказывается на образе мышления кстати решение то неправильное9 9 5 1 (после сортировки)второй по величине будет 5, у тебя выдаст 9 который является максимальным Поделиться сообщением Ссылка на сообщение
TheDeadSkin #10048 11 февраля 2017 (изменено) не бойся, он щас найдёт очередной однострочник .removeAllDuplicates()который сделает ещё один O(N) по массиву (это если он знает что массив отсортирован, а если нет то NlogN или N^2), но на производительность это не повлияет, пруфов-то нет Изменено 11 февраля 2017 пользователем TheDeadSkin Поделиться сообщением Ссылка на сообщение
suez #10049 11 февраля 2017 Я про это в скайпе у него кстати спрашивал, когда первое решение написал. Я упомянул что в условии написано что надо найти второй по величине элемент (ибо 100 одинаковых элементов не могут считаться "первыми"), а не не_повторяющееся число, на что он сказал что можно двигаться дальше. http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
Rooster #10050 11 февраля 2017 Все таки forEach слишком медленный Поделиться сообщением Ссылка на сообщение
TheDeadSkin #10051 11 февраля 2017 ну кстати если таки надо второй уник то однострочником это уже не решишьили это будет ещё более неэффективно типа любым "убрать дубликаты" Поделиться сообщением Ссылка на сообщение
suez #10052 11 февраля 2017 (изменено) Все таки forEach слишком медленныйПогонял несколько раз, + потом еще самопальные в консоли поделал. Форич офк послабее, но у меня разница бывает от 60 до 10% slower. Причем на мелких значениях в районе 100к итераций (где все делается за 1-2 мс) разница стабильная почти в 2 раза, но когда поднимаюсь до 1+ миллиона итераций и выше, разница становится очень мелкой. Хотя больше пахнет рандомной еботой в браузере, из-за других запущенных вкладок и так далее. Хотя никакие стримы не запущены.В общем как уже написал выше, тут все сводится к бенчмаркингу и адекватным выводам. В норм коде если будешь везде ебашить for loop без обоснований вместо адекватных и легкочитаемых forEach/map, то тебя на кодревью будут пиздить ногами, ибо в 99% случаев у тебя никогда не будет необходимости работать с огромными массивами на фронтенде (ибо нахуй вам тогда вообще бэкенд, если вы собираетесь юзера кормить таким количеством дерьма). Ну или на крайняк можно юзать воркеры в отдельном треде, но это для особых юзкейсов, когда надо какую-нибудь сложную геометрию просчитывать для WebGL, а там люди уже обычно работают со специализированными массивами и они ясен хуй не будут юзать forEach и будут драться за любые 5% перфа, чтобы у юзера было 60фпс по итогу (хотя почти все йоба-вебгл демки далеки от 60фпс, даже если код написан иисусом). Изменено 11 февраля 2017 пользователем suez http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
Cantona.Eric #10053 13 февраля 2017 Мнения разделились Ну да бекенду главное чтобы на 0,000001 секунду быстрее, и похуй что свой же код потом будешь читать 1строка/минуту, Для фронта же главное чтобы любой формошлеп мог понять что здесь происходит Всем не похуй я за читаемость кода Я не человек, Я - Кантона. (с) Miraxes#2986 Поделиться сообщением Ссылка на сообщение
suez #10054 13 февраля 2017 Онсайт интервью уже на завтра назначали, пиздосБудет 3 этапа интервью с разными группами людей, типа допуск к некст группе основан на фидбеке от прошлой, лол, словно уровни проходить будуИду чисто на разведку, посмотреть на офис, людей, как живут и так далееИбо по-любому через пару недель придется им сказать что я не готов пока принять оффер (если дадут офк), так как я до сих пор даже не начал аппалится в гуглы + мне кажется они унылым говном назнимаются (саппорт чатики для сайтов делают, хотя компания явно не бедная как бы, да еще и публичная) http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
Milky_Way #10055 13 февраля 2017 чо за контора, а то я проебал последнее чо тут было я знаю точно что все телки которые красивые и которые любят ебаться, разбираются в часах Но у меня нету часов, и хуевая ауди поэтому приходится дома дрочить Поделиться сообщением Ссылка на сообщение
suez #10056 13 февраля 2017 Zendesk http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
Rooster #10057 13 февраля 2017 (изменено) Гайз, подскажите как по православному сделать, чтобы новые добавляемые блоки выравнивались по боту родителя один за другим, что-то типо как сообщения в вкВсе, вспомнил Изменено 13 февраля 2017 пользователем Rooster Поделиться сообщением Ссылка на сообщение
FeelTheHatred #10058 15 февраля 2017 Нужно по фасту освоить реакт+редукс.Что посоветуете? Поделиться сообщением Ссылка на сообщение
suez #10059 15 февраля 2017 https://github.com/enaqx/awesome-reacthttps://github.com/xgrommx/awesome-reduxНу и банально погуглить, статей миллион. http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
FeelTheHatred #10060 15 февраля 2017 вот ща читаю, все выглядит таким пиздатым и охуеннымжопой чую на практике нежданчик будет, коньча какая-нибудь всплывает которую костылями фиксить Поделиться сообщением Ссылка на сообщение