private static void CommpareAdd(ObservableCollection<Item> collection, ObservableCompositeCollection<Item> compositeCollection) { var data = CreateData(); var stopwatch = Stopwatch.StartNew(); var t1 = stopwatch.Elapsed; collection.AddRange(data.SelectMany(list => list)); var t2 = stopwatch.Elapsed; compositeCollection.Content.AddRange(data); var t3 = stopwatch.Elapsed; stopwatch.Stop(); var compositeTime = t3 - t2; var plainTime = t2 - t1; var factor = compositeTime.TotalSeconds / plainTime.TotalSeconds; Debug.WriteLine("composite: {0} / plain {1} = {2}", compositeTime, plainTime, factor); Debug.WriteLine("{0} elements.", compositeCollection.Count); Assert.IsTrue(factor < 2); Assert.IsTrue(collection.SequenceEqual(compositeCollection)); }