Skip to content

Performance (Big Collections)

nabuk edited this page Nov 10, 2013 · 2 revisions

Following performance tests were performed on simple, enumerable collection generated by Enumerable.Range(0, collectionSize). Partial times, longer than normalized deviation, were discarded.

###Settings

  • Collection size: 1,000,000
  • Sample size: 50
  • Iterations per sample: 10

##NSlice vs. LINQ
###Get items at odd indices -34.3%

.Slice(1, step: 2).Last()
92 ms

.Where((x, i) => i % 2 == 1).Last()
141 ms

###Reverse -5.5%

.Slice(step: -1).First()
102 ms

.Reverse().First()
108 ms

###Reverse and get at even indices -33.9%

.Slice(step: -2).Last()
194 ms

.Reverse().Where((x, i) => i % 2 == 0).Last()
293 ms

###Get middle terce -14.8%

.Slice(terce, terce*2).Last()
79 ms

.Skip(terce).Take(terce).Last()
93 ms

###Get middle terce reversed -17.8%

.Slice(-terce, terce, -1).First()
89 ms

.Skip(terce).Take(terce).Reverse().First()
108 ms

Clone this wiki locally