diff --git a/benchmarks/InVectorCache/InVectorCache.cpp b/benchmarks/InVectorCache/InVectorCache.cpp index 75254b459..71b231d47 100644 --- a/benchmarks/InVectorCache/InVectorCache.cpp +++ b/benchmarks/InVectorCache/InVectorCache.cpp @@ -19,6 +19,34 @@ CONSOLE_APP_MAIN } RDUMP(m); } + { + RTIMING("Simple scan, more complex OP"); + int m = 0; + for(int j = 0; j < N; j++) { + for(int i = 0; i < x.GetCount(); i++) + if(x[i] > 500) + m += x[i]; + for(int i = x.GetCount(); --i >= 0;) + if(x[i] > 500) + m += x[i]; + } + RDUMP(m); + } + { + RTIMING("Iterator scan"); + int m = 0; + for(int j = 0; j < N; j++) { + InVector::Iterator e = x.End(); + InVector::Iterator i = x.Begin(); + while(i != e) + m += *i++; + e = x.Begin(); + i = x.End(); + while(i != e) + m += *--i; + } + RDUMP(m); + } { RTIMING("Single InVector, problematic scan"); int m = 0;