Added a second PagedVolume to the tests with much higher allowed memory usage. This makes more sense when testing random access, as low permitted memory usage causes disk IO to become the bottleneck.

This commit is contained in:
David Williams 2015-04-10 16:56:19 +02:00
parent b90f0d4e15
commit c562341db0
2 changed files with 8 additions and 5 deletions

View File

@ -225,7 +225,7 @@ int32_t testDirectRandomAccess(const VolumeType* volume)
std::mt19937 rng; std::mt19937 rng;
int32_t result = 0; int32_t result = 0;
for (uint32_t ct = 0; ct < 10000; ct++) for (uint32_t ct = 0; ct < 1000000; ct++)
{ {
uint32_t rand = rng(); uint32_t rand = rng();
@ -258,10 +258,12 @@ TestVolume::TestVolume()
m_regExternal.shiftUpperCorner(2, 5, 4); m_regExternal.shiftUpperCorner(2, 5, 4);
m_pFilePager = new FilePager<int32_t>("."); m_pFilePager = new FilePager<int32_t>(".");
m_pFilePagerHighMem = new FilePager<int32_t>(".");
//Create the volumes //Create the volumes
m_pRawVolume = new RawVolume<int32_t>(m_regVolume); m_pRawVolume = new RawVolume<int32_t>(m_regVolume);
m_pPagedVolume = new PagedVolume<int32_t>(m_pFilePager, 1 * 1024 * 1024, m_uChunkSideLength); m_pPagedVolume = new PagedVolume<int32_t>(m_pFilePager, 1 * 1024 * 1024, m_uChunkSideLength);
m_pPagedVolumeHighMem = new PagedVolume<int32_t>(m_pFilePagerHighMem, 256 * 1024 * 1024, m_uChunkSideLength);
//Fill the volume with some data //Fill the volume with some data
for (int z = m_regVolume.getLowerZ(); z <= m_regVolume.getUpperZ(); z++) for (int z = m_regVolume.getLowerZ(); z <= m_regVolume.getUpperZ(); z++)
@ -273,11 +275,11 @@ TestVolume::TestVolume()
int32_t value = x + y + z; int32_t value = x + y + z;
m_pRawVolume->setVoxel(x, y, z, value); m_pRawVolume->setVoxel(x, y, z, value);
m_pPagedVolume->setVoxel(x, y, z, value); m_pPagedVolume->setVoxel(x, y, z, value);
m_pPagedVolumeHighMem->setVoxel(x, y, z, value);
} }
} }
} }
// Note - We are reusing the FilePager for testing... watch out for conflicts with the main volume.
m_pPagedVolumeChunk = new PagedVolume<uint32_t>::Chunk(Vector3DInt32(10000, 10000, 10000), m_uChunkSideLength, nullptr); m_pPagedVolumeChunk = new PagedVolume<uint32_t>::Chunk(Vector3DInt32(10000, 10000, 10000), m_uChunkSideLength, nullptr);
std::mt19937 rng; std::mt19937 rng;
for (uint16_t z = 0; z < m_uChunkSideLength; z++) for (uint16_t z = 0; z < m_uChunkSideLength; z++)
@ -488,7 +490,7 @@ void TestVolume::testRawVolumeDirectRandomAccess()
{ {
result = testDirectRandomAccess(m_pRawVolume); result = testDirectRandomAccess(m_pRawVolume);
} }
QCOMPARE(result, static_cast<int32_t>(805464457)); QCOMPARE(result, static_cast<int32_t>(267192737));
} }
void TestVolume::testPagedVolumeDirectRandomAccess() void TestVolume::testPagedVolumeDirectRandomAccess()
@ -496,9 +498,9 @@ void TestVolume::testPagedVolumeDirectRandomAccess()
int32_t result = 0; int32_t result = 0;
QBENCHMARK QBENCHMARK
{ {
result = testDirectRandomAccess(m_pPagedVolume); result = testDirectRandomAccess(m_pPagedVolumeHighMem);
} }
QCOMPARE(result, static_cast<int32_t>(805464457)); QCOMPARE(result, static_cast<int32_t>(267192737));
} }
int32_t TestVolume::testPagedVolumeChunkAccess(uint16_t localityMask) int32_t TestVolume::testPagedVolumeChunkAccess(uint16_t localityMask)

View File

@ -72,6 +72,7 @@ private:
PolyVox::Region m_regInternal; PolyVox::Region m_regInternal;
PolyVox::Region m_regExternal; PolyVox::Region m_regExternal;
PolyVox::FilePager<int32_t>* m_pFilePager; PolyVox::FilePager<int32_t>* m_pFilePager;
PolyVox::FilePager<int32_t>* m_pFilePagerHighMem;
PolyVox::RawVolume<int32_t>* m_pRawVolume; PolyVox::RawVolume<int32_t>* m_pRawVolume;
PolyVox::PagedVolume<int32_t>* m_pPagedVolume; PolyVox::PagedVolume<int32_t>* m_pPagedVolume;