Я делаю игру Unity (C# 2.0), и это первый раз, когда я делаю все, что требует наилучшей производительности. Когда миссия заканчивается, игроку дается определенное количество ресурсов в зависимости от фактора времени, который удерживается объектом миссии. Всего всего 4 ресурса, поэтому я использовал 4 16-длинных переключателя-на-int (время * 1000), по одному коммутатору на ресурс.Switch vs dictionary with double keys
static int resource1reward(double time)
{
int time2 = time*1000;
switch (time2)
{
}
}
Глядя на некоторые должности, я решил попробовать использовать 4 словаря.
Dictionary<double, int> resource1dic = new Dictionary<double, int>(16);
static int resource1dicreward(double time)
{
return resource1[time];
}
Используя секундомер, я увидел огромную разницу между вызовом (1) 4 метода; и (2) один метод, который искал 4 словаря.
- 10 до 15 мс
- от 0 до 2 мс
Проблема заключается в том, что я до сих пор очень длинный статический метод, который инициализирует 4 словарей. Все они имеют одинаковые ключи (таймер), но разные значения. Есть ли лучший/более чистый способ сделать это?
Создайте структуру, которая отображает ваш прецедент, и используйте * that * в качестве значения в словаре. –
@PrestonGuillot - Я уже использую это –
Вы уже используете что? В вашем примере значение в вашем словаре является «int», и вы заявляете, что у вас есть 4 словаря. То, что вы хотите * хотеть *, - это «Словарь <строка, SomeCustomType>», где 'SomeCustomType' имеет четыре поля' int'. –