Size: a a a

F# Flood: ПДД made functional, making illegal state INGIBDDdale

2020 April 24

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Дисклеймер: я их на собесах не задаю, если что
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Doge Shibu
Как-то раз на досуге придумал пару небольших задачек про производительность. В каждой из задач два варианта исполнения одного и того же кода, только один из них исполняется сильно медленее другого. Вопрос в том, чтобы обьяснить почему так.

Сами задачи на js, чтобы было легко исполнить их в браузере:
https://jsfiddle.net/djth9oq7/
https://jsfiddle.net/3smxuh1o/
ленгведж агностик или надо знать v8?
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
ленгведж агностик или надо знать v8?
Я это могу воспроизвести и на других языках.

На джаве и шарпе можно так же.
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
На нативных тоже
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
ленгведж агностик или надо знать v8?
Но этот вопрос - вообще тоже часть задачки.
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
моё предположение совершенно тупое.
const iterate = function(array) {
 var sum = 0;
 for (i = 0; i < size; i++) {
   if (array[i] < (size / 2)) {
     sum += array[i];
   }
 }
 return sum;
};


сумма первой половины массива выполняется быстрее на сортированном массиве просто потому что в сортированном массиве числа меньше в первой половине, чем во второй)))
источник

VS

Vasily Shapenko in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Немного не так
источник

VS

Vasily Shapenko in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Там вроде сумма считается только чисел, которые меньше size/2
источник

DS

Doge Shibu in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ayrat Hudaygulov
моё предположение совершенно тупое.
const iterate = function(array) {
 var sum = 0;
 for (i = 0; i < size; i++) {
   if (array[i] < (size / 2)) {
     sum += array[i];
   }
 }
 return sum;
};


сумма первой половины массива выполняется быстрее на сортированном массиве просто потому что в сортированном массиве числа меньше в первой половине, чем во второй)))
Там миспредикт у предсказателя переходов, там где числа в массиве в случайном порядке
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
ой, ну началось.
источник

VS

Vasily Shapenko in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ну такое, да
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Vasily Shapenko
Там вроде сумма считается только чисел, которые меньше size/2
а, точно
источник

VS

Vasily Shapenko in F# Flood: ПДД made functional, making illegal state INGIBDDdale
А потом в код смотришь, а там спрингом намазано
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
я чот думал там индекс сравнивается с сайзом/2
источник

VS

Vasily Shapenko in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Вторая задачка, похоже, про разворачивание циклов в жс
источник

VS

Vasily Shapenko in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Короче, нипанятна
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
не, если она агностик, то опять ебала про процессоры
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
даже не про асм, потому что тогда будет завязано на компилятор
источник

VS

Vasily Shapenko in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Не думаю, что у собакена такой хуйлоад
источник

VS

Vladimir Shchur in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Vasily Shapenko
Вторая задачка, похоже, про разворачивание циклов в жс
эта стандартная же, про расположение массивов в памяти
источник