Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 6

Рекомендованные сообщения

бросилось в глаза

2) Написать функцию, возвращающую второй по величине аргумент массива цифр. Сходу написал это var secondLargest = (arr) => arr.sort((a,b) => a - b)[1];  и сразу же сказал что я всегда забываю, надо ли вычитать a из b или наоборот чтобы отсортировать по убыванию (офк надо было b - a).

 

быстрее будет за O(n) пройтись по массиву и найти нужный элемент, чем делать сортировку за O(nlogn)

видно программирование на жаваскрипте сказывается на образе мышления

Поделиться сообщением


Ссылка на сообщение

Ну при учете того что мой вариант ебашится в 1 строчку, легко читаем/понимаем и самое главное, он оптимизируется внутри v8 просто без проблем (что делает разницу в скорости просто ничтожной), то как бы написание велосипеда с твоим вариантом проигрывает почти по всем параметрам.


userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

если можно написать лучше по перформансу потратив 1 минуту то почему бы этого не сделать

вот эта парадигма "ебашится в 1 строчку" мне она не понятна

Поделиться сообщением


Ссылка на сообщение

Ну при учете того что мой вариант ебашится в 1 строчку, легко читаем/понимаем и самое главное, он оптимизируется внутри v8 просто без проблем (что делает разницу в скорости просто ничтожной), то как бы написание велосипеда с твоим вариантом проигрывает почти по всем параметрам.

А forEach тоже оптимизируется? Он же по дефолту вроде намного медленнее цикла


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

Ну при учете того что мой вариант ебашится в 1 строчку, легко читаем/понимаем и самое главное, он оптимизируется внутри v8 просто без проблем (что делает разницу в скорости просто ничтожной), то как бы написание велосипеда с твоим вариантом проигрывает почти по всем параметрам.

а в чём именно заключается эта оптимизация для даной ситуации? я сомневаюсь что любая оптимизация уберёт полную сортировку, т.е О значение останется nlogn

Поделиться сообщением


Ссылка на сообщение

 

Ну при учете того что мой вариант ебашится в 1 строчку, легко читаем/понимаем и самое главное, он оптимизируется внутри v8 просто без проблем (что делает разницу в скорости просто ничтожной), то как бы написание велосипеда с твоим вариантом проигрывает почти по всем параметрам.

А forEach тоже оптимизируется? Он же по дефолту вроде намного медленнее цикла

 

ForEach раньше был заметно медленнее обычного for цикла, сейчас вроде как разница почти минимальна. Про это есть много статей, все сводится к тому, что в 99% случаев надо писать код для людей, ибо v8 просто по максимуму оптимизирует все эти дефолтные методы и результаты получаются почти одни и те же. В некоторых случаях все доходит до того, что сахарные методы могут быть даже теоретически быстрее чем твой йоба-оптимизированный-велосипед, потому-что сам v8 возможно посчитает что не сможет ничем тут помочь и произойдет деоптимизация кода.

 

В общем тут история про то, что не стоит выебываться своими ахуительными алгоритмическими скиллами до тех пор, пока у тебя не будет пруфов что это место действительно создает проблемы с производительностью (привет от первого, и самого важного антипаттерна программирования - premature optimization).


userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

бросилось в глаза

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 который является максимальным

Поделиться сообщением


Ссылка на сообщение
(изменено)

не бойся, он щас найдёт очередной однострочник .removeAllDuplicates()

который сделает ещё один O(N) по массиву (это если он знает что массив отсортирован, а если нет то NlogN или N^2), но на производительность это не повлияет, пруфов-то нет


Изменено пользователем TheDeadSkin

Поделиться сообщением


Ссылка на сообщение

Я про это в скайпе у него кстати спрашивал, когда первое решение написал. Я упомянул что в условии написано что надо найти второй по величине элемент (ибо 100 одинаковых элементов не могут считаться "первыми"), а не не_повторяющееся число, на что он сказал что можно двигаться дальше.


userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

Все таки forEach слишком медленный

NQFQfLo.png


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

ну кстати если таки надо второй уник то однострочником это уже не решишь

или это будет ещё более неэффективно типа любым "убрать дубликаты"

Поделиться сообщением


Ссылка на сообщение
(изменено)

Все таки forEach слишком медленный

NQFQfLo.png

Погонял несколько раз, + потом еще самопальные в консоли поделал. Форич офк послабее, но у меня разница бывает от 60 до 10% slower. Причем на мелких значениях в районе 100к итераций (где все делается за 1-2 мс) разница стабильная почти в 2 раза, но когда поднимаюсь до 1+ миллиона итераций и выше, разница становится очень мелкой. Хотя больше пахнет рандомной еботой в браузере, из-за других запущенных вкладок и так далее. Хотя никакие стримы не запущены.

В общем как уже написал выше, тут все сводится к бенчмаркингу и адекватным выводам. В норм коде если будешь везде ебашить for loop без обоснований вместо адекватных и легкочитаемых forEach/map, то тебя на кодревью будут пиздить ногами, ибо в 99% случаев у тебя никогда не будет необходимости работать с огромными массивами на фронтенде (ибо нахуй вам тогда вообще бэкенд, если вы собираетесь юзера кормить таким количеством дерьма). Ну или на крайняк можно юзать воркеры в отдельном треде, но это для особых юзкейсов, когда надо какую-нибудь сложную геометрию просчитывать для WebGL, а там люди уже обычно работают со специализированными массивами и они ясен хуй не будут юзать forEach и будут драться за любые 5% перфа, чтобы у юзера было 60фпс по итогу (хотя почти все йоба-вебгл демки далеки от 60фпс, даже если код написан иисусом).


Изменено пользователем suez

userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

Мнения разделились

 

Ну да бекенду главное чтобы на 0,000001 секунду быстрее, и похуй что свой же код потом будешь читать 1строка/минуту,

 

Для фронта же главное чтобы любой формошлеп мог понять что здесь происходит

 

 

Всем не похуй

я за читаемость кода

 

 


Я не человек, Я - Кантона. (с)

Miraxes#2986

753357.png

Поделиться сообщением


Ссылка на сообщение

Онсайт интервью уже на завтра назначали, пиздос

Будет 3 этапа интервью с разными группами людей, типа допуск к некст группе основан на фидбеке от прошлой, лол, словно уровни проходить буду

Иду чисто на разведку, посмотреть на офис, людей, как живут и так далее

Ибо по-любому через пару недель придется им сказать что я не готов пока принять оффер (если дадут офк), так как я до сих пор даже не начал аппалится в гуглы + мне кажется они унылым говном назнимаются (саппорт чатики для сайтов делают, хотя компания явно не бедная как бы, да еще и публичная)


userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

чо за контора, а то я проебал последнее чо тут было


я знаю точно что все телки которые красивые и которые любят ебаться, разбираются в часах

Но у меня нету часов, и хуевая ауди поэтому приходится дома дрочить

Поделиться сообщением


Ссылка на сообщение
(изменено)

Гайз, подскажите как по православному сделать, чтобы новые добавляемые блоки выравнивались по боту родителя один за другим, что-то типо как сообщения в вк

Все, вспомнил


Изменено пользователем Rooster

Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

Нужно по фасту освоить реакт+редукс.
Что посоветуете?


 

Поделиться сообщением


Ссылка на сообщение

вот ща читаю, все выглядит таким пиздатым и охуенным

жопой чую на практике нежданчик будет, коньча какая-нибудь всплывает которую костылями фиксить


 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...