Как оптимизировать добавление в коллекцию?
У меня есть есть объект Trie, содержащий коллекцию с историей изменений. Выглядит это вот так:
public class Trie {
public ObservableCollection<ReceivedHistoryMessage> History { get; set; }
= new();
public void AddToHistory( MqttMessage mqttMessage )
{
if ( History.Count >= 100 )
{
Count = 0;
History.Clear();
}
History.Insert( 0, new ReceivedHistoryMessage
{
Time = DateTime.Now,
Message = mqttMessage
} );
Count++;
}
}
public class ReceivedHistoryMessage
{
public DateTime Time { get; set; }
public MqttMessage? Message { get; set; }
}
Объектов Trie много, кол-во объектов History много, поэтому все как-то подтормаживает. Стоит еще отметить, что всегда я просматриваю в дереве историю только одной ноды, не все коллекции нужны всегда Как все это можно оптимизировать?
upd:
попробовал убрать Insert, но т.к мне нужно вставка в начало, сделал следующее:
public class Trie
{
History
.Connect()
.ObserveOn(RxApp.TaskpoolScheduler) // to run on background thread
.Sort(SortExpressionComparer<ReceivedHistoryMessage>.Descending(e => e.Id))
.ObserveOn(RxApp.MainThreadScheduler) // this needed because UI updates need to run on the main
.Bind(out _uiHistoryMessages)
.DisposeMany()
.Subscribe();
}
а использую такие коллекции:
public SourceList<ReceivedHistoryMessage> History { get; } = new();
private readonly ReadOnlyObservableCollection<ReceivedHistoryMessage> _uiHistoryMessages;
public ReadOnlyObservableCollection<ReceivedHistoryMessage> UiHistoryMessages => _uiHistoryMessages;
History используется для добавления в методе AddToHistory()
ничего существенно не поменялось