У меня есть функция, которая получает три разных объекта «люди» и генерирует новый объект «совместимости», основанный на комбинированных значениях объектов «люди».C# - Нужны предложения по улучшению раздела кода
Однако около 1/3 времени, когда три объекта «люди», которые он получает в качестве входных данных, являются такими же, как и раньше, хотя, возможно, в другом порядке. В этих случаях я НЕ хочу создавать новый объект «оценка», но просто возвращаю значение, содержащееся в существующем объекте.
Первоначально программа просто перебирает список объектов «совместимости», поиск которых принадлежит этим трем «людям» (так как каждый объект «совместимости» содержит массив объектов людей). Этот метод очень медленный, учитывая, что существует более тысячи объектов «совместимости» и более миллиона «людей».
У меня была идея использования словаря, где ключ - это число, которое я генерировал, объединив значения идентификатора трех людей в единый UInt64 с помощью XOR и сохраняя объекты оценки в качестве значений словаря, а не в списке , Это сокращает время примерно на половину и приемлемо с точки зрения времени, но слишком много столкновений, и он слишком часто возвращает неправильный счет.
Любые предложения или указатели будут высоко оценены.
Редактировать: Чтобы добавить к исходному вопросу, каждый объект «people» имеет кучу других полей, которые я мог бы использовать, но проблема заключается в создании ключа, который является UNIQUE и COMMUTATIVE.
Похоже, что я сделал бы это всего лишь одно примечание, если идентификаторы Person фиксированы, разделитель не требуется. Я бы нашел это немного более аккуратным. – PeteT