Size: a a a

2021 March 10

VL

Vladimir Lozhnikov in F# Chat
источник

VL

Vladimir Lozhnikov in F# Chat
это тест
источник

VL

Vladimir Lozhnikov in F# Chat
на выходе дает следующее
источник

VL

Vladimir Lozhnikov in F# Chat
origin [[1; 2; 3]; [4; 5; 6]; [7; 8; 9]; [11; 12; 13]]
flat [1; 2; 3; 4; 5; 6; 7; 8; 9; 11; 12; 13]
источник

VL

Vladimir Lozhnikov in F# Chat
я вот думаю, как лучше тут сделать объединение? через аппент или контакенацию?
источник

VL

Vladimir Lozhnikov in F# Chat
мне кажется, что через аппенд, чтобы не было большого количества аллокаций и не нагружать сборщик мусора
источник

VK

Vladislav Khapin in F# Chat
let flat (list: 'a list list) =
 [
   for list in list do
     for l in list do
       yield l
 ]
источник

VL

Vladimir Lozhnikov in F# Chat
вариант, да
источник

VK

Vladislav Khapin in F# Chat
let flat (list: 'a list list) =
 [
   for list in list do
     yield! list
 ]
источник

VL

Vladimir Lozhnikov in F# Chat
👍
источник

I

IdiocyAcceptance in F# Chat
Vladislav Khapin
let flat (list: 'a list list) =
 [
   for list in list do
     yield! list
 ]
это хуже, чем list.concat по идее
источник

I

IdiocyAcceptance in F# Chat
с точки зрения перфа
источник

VK

Vladislav Khapin in F# Chat
замерьте
источник

I

IdiocyAcceptance in F# Chat
Vladimir Lozhnikov
мне кажется, что через аппенд, чтобы не было большого количества аллокаций и не нагружать сборщик мусора
тебе точно надо таким заморачиваться?
источник

I

IdiocyAcceptance in F# Chat
есть concat из коробки, юзай, да и всё
источник

VL

Vladimir Lozhnikov in F# Chat
ты имеешь ввиду оператор @?
источник

VL

Vladimir Lozhnikov in F# Chat
а, пардон, нашел
источник

VL

Vladimir Lozhnikov in F# Chat
прогнал тесты на всех трех способах. первые два способа практически равны по времени примерно 3.5 миллисекунд. третий способ из под коробки 2.4 миллисекунды
источник

VL

Vladimir Lozhnikov in F# Chat
но при увеличении количества элементов в массиве первый способ по скорости приближается в коробочному

let origin = [[0..100];
                    [1..200];
                    [2..300];
                    [4..400]]

TestFlatmap1 origin
TestFlatmap2 origin
TestFlatmap3 origin

total milliseconds 2.769700
total milliseconds 3.669900
total milliseconds 2.284200
источник

VK

Vladislav Khapin in F# Chat
benchmarkdotnet
источник