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.

questionAnswers(7)

yourAnswerToTheQuestion