F # FSharpMap vs Словарь производительности - PullRequest
15 голосов
/ 03 августа 2010

Мне было интересно, как неизменная карта F # работает со стандартным словарем.

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

А как насчет использования памяти?

Спасибо

1 Ответ

17 голосов
/ 03 августа 2010

Мне было интересно, как неизменная карта F # работает со стандартным словарем.

См. Visual F # 2010 для технических вычислений стр. 241-242 «Оптимизация: используйте изменяемые структуры данных». Показывает Dictionary, работающий в 5-40 раз быстрее, чем Map в очень похожей настройке подсчета частот в дюймах в зависимости от количества уникальных ключей.

В общем, чисто функциональные структуры данных, такие как Map, не только чрезвычайно медленны в последовательном случае, но и разрушают масштабируемость целых параллельных программ. Недавно я прочитал лекцию .

Кстати, не забывайте, что есть Seq.countBy функция!

...