Всегда сохраняйте последние N значений в массиве и отбрасывайте самые старые.C#

Место общения программистов C#
Ответить
Anonymous
 Всегда сохраняйте последние N значений в массиве и отбрасывайте самые старые.

Сообщение Anonymous »

Я пишу пользовательский элемент управления, который по сути представляет собой диаграмму/график, отображающий максимум 1024 двойных значения.
В настоящее время я храню значения в списке, и когда я получаю новое значение по счетчику 1024. Я удаляю последнее в списке, и я уверен, что это не самый эффективный способ сделать это с точки зрения производительности и распределения.

Код: Выделить всё

    private readonly List myValues = new(1025);

public void AddValue(double newValue) {
myValues.Insert(0, newValue);
if (myValues.Count > 1024) myValues.RemoveAt(1024);
}
Это лучший/правильный подход?
Я также рассматриваю возможность использования прямого массива double[] и просто скопировать элементы из От 1 до -1 за каждое сложение, но у меня такое ощущение, что это тоже неверно.

Код: Выделить всё

    private readonly double[] myArray = new double[1024];

public void AddValue2(double newValue) {
Array.Copy(myArray, 0, myArray, 1, 1023);
myArray[0] = newValue;
}
Есть какие-нибудь предложения или рекомендации о том, как наиболее эффективно это реализовать?

Подробнее здесь: https://stackoverflow.com/questions/782 ... the-oldest
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»