Tupla vs string como uma chave de dicionário em C #
Eu tenho um cache que eu implemento usando um ConcurrentDictionary. Os dados que eu preciso manter dependem de 5 parâmetros. Portanto, o método para obtê-lo do cache é: (mostro apenas 3 parâmetros aqui para simplificar e alterei o tipo de dados para representar CarData para maior clareza)
public CarData GetCarData(string carModel, string engineType, int year);
Gostaria de saber que tipo de chave será melhor usar no meu ConcurrentDictionary, posso fazer assim:
var carCache = new ConcurrentDictionary<string, CarData>();
// check for car key
bool exists = carCache.ContainsKey(string.Format("{0}_{1}_{2}", carModel, engineType, year);
Ou assim:
var carCache = new ConcurrentDictionary<Tuple<string, string, int>, CarData>();
// check for car key
bool exists = carCache.ContainsKey(new Tuple(carModel, engineType, year));
Eu não uso esses parâmetros juntos em nenhum outro lugar; portanto, não há justificativa para criar uma classe apenas para mantê-los juntos.
Quero saber qual abordagem é melhor em termos de desempenho e manutenção.