Я запускаю симулятор, часть которого требует определенного массива пар значений. Когда я использовал Array.Sort (v1, v2), он сортирует 2 массива на основе первого, и все моделирование занимает примерно 9 мс. Но мне нужно сортировать на основе первого, а затем второго, поэтому я создал массив структур. См. Мой код ниже.C# sort array of structs
private struct ValueWithWeight : IComparable<ValueWithWeight>
{
public double Value;
public double Weight;
public int CompareTo(ValueWithWeight other)
{
int cmp = this.Value.CompareTo(other.Value);
if (cmp != 0)
return cmp;
else
return this.Weight.CompareTo(other.Weight);
}
}
void Usage()
{
ValueWithWeight[] data = FillData();
Array.Sort(data);
}
Теперь это занимает примерно 27 мс. Есть ли лучший способ сортировки?
И проблема, связанная с 27ms, является реальной проблемой? Вы уверены, что не микро-оптимизируете? –
, если вы попытаетесь оптимизировать свой код любой ценой, он может сделать ваш код трудно понятным для себя. не заботитесь о 27ms или 9ms ... –
Создайте правильный тест. Мы не знаем, как вы получаете числа, и из-за этого упомянутый порядок величины не имеет смысла. Вы также можете видеть неточность таймера. Также на самом деле возникает ваш вопрос: «Почему сравнение двух значений занимает примерно в два раза больше, чем сравнение одного значения» _? – CodeCaster