ultimatepp/benchmarks/InVectorCache/InVectorCache.cpp
cxl f1c1320577 InVectorCache
git-svn-id: svn://ultimatepp.org/upp/trunk@5852 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2013-02-23 16:11:14 +00:00

55 lines
1 KiB
C++

#include <Core/Core.h>
using namespace Upp;
CONSOLE_APP_MAIN
{
int N = 10;
InVector<int> x;
for(int i = 0; i < 1000000; i++)
x.Add(Random(1000));
{
RTIMING("Simple scan");
int m = 0;
for(int j = 0; j < N; j++) {
for(int i = 0; i < x.GetCount(); i++)
m += x[i];
for(int i = x.GetCount(); --i >= 0;)
m += x[i];
}
RDUMP(m);
}
{
RTIMING("Single InVector, problematic scan");
int m = 0;
for(int j = 0; j < N; j++) {
for(int i = 0; i < x.GetCount(); i++)
m += x[i] + x[x.GetCount() - i - 1];
}
RDUMP(m);
}
{
InVector<int> y;
y <<= x;
RTIMING("Two InVectors");
int m = 0;
for(int j = 0; j < N; j++) {
for(int i = 0; i < x.GetCount(); i++)
m += x[i] + y[i];
}
RDUMP(m);
}
{
InVector<int> y;
y <<= x;
RTIMING("Two InVectors, two simple scans");
int m = 0;
for(int j = 0; j < N; j++) {
for(int i = 0; i < x.GetCount(); i++)
m += x[i];
for(int i = y.GetCount(); --i >= 0;)
m += y[i];
}
RDUMP(m);
}
}