Хотелось бы, чтобы это сравнение было быстрее (пример ниже). Образец принимает каждое значение в массиве, присоединяет час к переменной сравнения. Если нет подходящего значения, оно добавляет значение во второй массив (который объединяется позже).
if (ticks.TypeOf == Period.Hour)
while (compareAt <= endAt)
{
if (range.Where(d => d.time.AddMinutes(-d.time.Minute) == compareAt).Count() < 1)
gaps.Add(new SomeValue() {
...some dummy values.. });
compareAt = compareAt.AddTicks(ticks.Ticks);
}
Это выполнение слишком трудоемко, когда пришло то есть часы. В этом массиве максимум 100 * значений. В будущем будут также минуты / секунды в месяц 60*24*31=44640
, что означает непригодно .
Если массив чаще всего был полным (что означает отсутствие пробелов / пустых слотов), его можно легко обойти с помощью if (range.Count() == (hours/day * days))
. Однако сегодня этот день не будет.
Как бы я решил это более эффективно?
Один пример: если в массиве 7800 значений, мы пропускаем около 950, верно? Но могу ли я найти только пропуски-окончания и просто создать пропущенные значения? Это сделало бы о-нотацию зависимой от количества пробелов, а не от количества значений.
Еще один приветственный ответ - это просто более эффективный цикл.
[Изменить]
Извините за плохой английский, я стараюсь изо всех сил описать.