я следующая функция в моей (пошаговой) код игры, в котором перечислены все законные шаги для игрока в игре:Список постижение против List.concat
let moves game =
let movesType1 game = ... //returns Move list
let movesType2 game = ... //returns Move list
let movesType3 game = ... //returns Move list
List.concat [ (movesType1 game); (movesType2 game); (movesType3 game) ]
Теперь я задаюсь вопросом, что было бы разница, если я использовал список понимание и yield!
сделать следующее:
let moves game =
let movesType1 game = ... //returns Move list
let movesType2 game = ... //returns Move list
let movesType3 game = ... //returns Move list
[ yield! movesType1 game
yield! movesType2 game
yield! movesType3 game ]
Я мог бы использовать эту функцию много раз, в некоторых случаях, так что я немного обеспокоен производительности.
Вы должны использовать последовательности, а не списки. –
Вместо того, чтобы спрашивать, почему бы не измерить каждый для себя? Вы можете использовать '# time' в F # Interactive для выполнения базового времени. – kvb
https://ericlippert.com/2012/12/17/performance-rant –