Порекомендовали бы вы использовать «Общую библиотеку коллекций C5 для C# и CLI», основываясь на своем опыте работы с ней?
-
09-06-2019 - |
Вопрос
Эта бесплатная библиотека собрана в Копенгагенском ИТ-университете.
http://www.itu.dk/research/c5/
На 9 канале есть видео с одним из авторов.Я пытаюсь научиться использовать эти коллекции, и мне интересно, есть ли у кого-нибудь еще опыт или что вы думаете об этой конкретной библиотеке коллекций для .NET.Нравится ли вам их дизайн, нравится ли вам их производительность и какие у вас с ними были основные проблемы?
Решение
Я использовал его раньше и хочу сделать пару замечаний:
- Библиотека очень хорошая, очень быстрая и очень полезная.В ней есть множество очень хороших структур данных, о некоторых из которых я не знал до того, как начал использовать эту библиотеку.
- Это открытый исходный код!Это огромное преимущество.
- Иногда у вас нет именно того, что вы хотите.Насколько показал мой опыт, авторы библиотеки решили действовать очень нетерпимо к ошибкам, создавая исключения по всему.Это заставило меня добавить несколько отказоустойчивых методов.
В целом, очень хорошая библиотека с продвинутыми структурами данных.К сожалению, поддержки очень мало, о чем можно судить по тому, что новые релизы (исправления ошибок и т. д.) составляют где-то от 6 месяцев до года.
Примечание: Начиная с Mono 2.0, C5 в комплекте как сторонний API, что я считаю прекрасным проявлением веры в продукт команды Mono.
Другие советы
Я использую библиотеку C5 уже некоторое время и с большим успехом.Я считаю, что C5 предлагает большие преимущества при программировании интерфейса.Например, в System.Collections.Generic
, IList
интерфейс не обеспечивает всех функций ArrayList
и LinkedList
реализации.И наоборот, в C5 вы можете получить доступ ко всем функциям ArrayList
и LinkedList
просто удерживая C5.IList
.
Кроме того, первоначальные авторы уделили большое внимание документированию асимптотической скорости многих важных операций, таких как подсчет коллекций, содержание и индексирование.Библиотека внутренне использует эти свойства при выполнении операций между коллекциями, чтобы определить, какая коллекция будет быстрее в качестве «актера».
Кроме того, хотя книга документации по C5 давно не обновлялась, она представляет собой замечательный ресурс, предоставляющий четкую документацию по библиотеке.
Вдобавок к этому очки Омера ван Клётена.
Лицензия с открытым исходным кодом — MIT (сопоставима с лицензией BSD). Это означает, что если вам нужно внести изменения в библиотеку, вам не нужно открывать исходный код этих изменений.(это может быть проблемой некоторых компаний).Для лицензий типа GPL это может быть проблемой.