Цена ошибки
Запись от DevAlt размещена 23.08.2026 в 02:25
Показов 1170
Комментарии 1
|
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от простого к сложному. Код делает очень простую вещь. Компилятор генерирует модуль для создания отсортированного набора. Сам код https://forums.fsharp.org/t/oc... mance/5183 И вот оказалось, что забыв про то, что интерфейсов IComparable два (один обычный, а второй обобщенный) я получил боксинг. Но удивительно даже не это, а то что встроенная реализация SortedSet<T> работает в 5 раз медленнее!
Байткод не изучал, но могу предположить, что для сравнения приходится копировать значения элементов в метод int Compare(int a, int b). А вы что думаете? | |||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
-
Про SortedSet только сейчас узнал, от тебя
Как-будто это очень древняя фигня, вместе с компаратором.
Последний раз писал компаратор для сортировки ip адресов.
Во всех остальных случая, использую linq:
Если нужна скорость - переписываю на циклы for.C# 1 2
const int n = 10000000; var list = Enumerable.Range(1, n).Reverse().OrderBy(x => x).ToList();
Всякие LinkedList, SortedList, Dictionary - стараюсь не использовать.Запись от zhigarartem размещена 10.09.2026 в 18:05



