Refactoed test code.
This commit is contained in:
parent
931c6cd3ec
commit
1d24b189ca
@ -468,49 +468,50 @@ void TestVolume::testPagedVolumeSamplersWithExternalBackwards()
|
|||||||
QCOMPARE(result, static_cast<int32_t>(-993539594));
|
QCOMPARE(result, static_cast<int32_t>(-993539594));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestVolume::testPagedVolumeChunkLocalAccess()
|
int32_t TestVolume::testPagedVolumeChunkAccess(uint32_t locality)
|
||||||
{
|
{
|
||||||
std::mt19937 rng;
|
std::mt19937 rng;
|
||||||
int32_t result = 0;
|
int32_t result = 0;
|
||||||
uint16_t x = rng() % m_uChunkSideLength;
|
uint16_t x = rng() % m_uChunkSideLength;
|
||||||
uint16_t y = rng() % m_uChunkSideLength;
|
uint16_t y = rng() % m_uChunkSideLength;
|
||||||
uint16_t z = rng() % m_uChunkSideLength;
|
uint16_t z = rng() % m_uChunkSideLength;
|
||||||
|
|
||||||
|
for (uint32_t ct = 0; ct < 1000000; ct++)
|
||||||
|
{
|
||||||
|
uint16_t xOffset = rng() % locality;
|
||||||
|
uint16_t yOffset = rng() % locality;
|
||||||
|
uint16_t zOffset = rng() % locality;
|
||||||
|
x += xOffset;
|
||||||
|
y += yOffset;
|
||||||
|
z += zOffset;
|
||||||
|
x %= m_uChunkSideLength;
|
||||||
|
y %= m_uChunkSideLength;
|
||||||
|
z %= m_uChunkSideLength;
|
||||||
|
int32_t voxel = m_pPagedVolumeChunk->getVoxel(x, y, z);
|
||||||
|
result = cantorTupleFunction(result, voxel);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestVolume::testPagedVolumeChunkLocalAccess()
|
||||||
|
{
|
||||||
|
int32_t result = 0;
|
||||||
QBENCHMARK
|
QBENCHMARK
|
||||||
{
|
{
|
||||||
for (uint32_t ct = 0; ct < 1000000; ct++)
|
result = testPagedVolumeChunkAccess(3); // Small value for good locality
|
||||||
{
|
|
||||||
uint16_t xOffset = rng() % 3;
|
|
||||||
uint16_t yOffset = rng() % 3;
|
|
||||||
uint16_t zOffset = rng() % 3;
|
|
||||||
x += xOffset;
|
|
||||||
y += yOffset;
|
|
||||||
z += zOffset;
|
|
||||||
x %= m_uChunkSideLength;
|
|
||||||
y %= m_uChunkSideLength;
|
|
||||||
z %= m_uChunkSideLength;
|
|
||||||
int32_t voxel = m_pPagedVolumeChunk->getVoxel(x, y, z);
|
|
||||||
result = cantorTupleFunction(result, voxel);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
QCOMPARE(result, static_cast<int32_t>(145244783));
|
QCOMPARE(result, static_cast<int32_t>(145244783));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestVolume::testPagedVolumeChunkRandomAccess()
|
void TestVolume::testPagedVolumeChunkRandomAccess()
|
||||||
{
|
{
|
||||||
std::mt19937 rng;
|
|
||||||
int32_t result = 0;
|
int32_t result = 0;
|
||||||
QBENCHMARK
|
QBENCHMARK
|
||||||
{
|
{
|
||||||
for (uint32_t ct = 0; ct < 1000000; ct++)
|
result = testPagedVolumeChunkAccess(1000000); // Large value for poor locality (random access)
|
||||||
{
|
|
||||||
uint16_t x = rng() % m_uChunkSideLength;
|
|
||||||
uint16_t y = rng() % m_uChunkSideLength;
|
|
||||||
uint16_t z = rng() % m_uChunkSideLength;
|
|
||||||
int32_t voxel = m_pPagedVolumeChunk->getVoxel(x, y, z);
|
|
||||||
result = cantorTupleFunction(result, voxel);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
QCOMPARE(result, static_cast<int32_t>(408757678));
|
QCOMPARE(result, static_cast<int32_t>(-254578110));
|
||||||
}
|
}
|
||||||
|
|
||||||
QTEST_MAIN(TestVolume)
|
QTEST_MAIN(TestVolume)
|
||||||
|
@ -61,6 +61,8 @@ private slots:
|
|||||||
void testPagedVolumeChunkRandomAccess();
|
void testPagedVolumeChunkRandomAccess();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int32_t testPagedVolumeChunkAccess(uint32_t locality);
|
||||||
|
|
||||||
static const uint16_t m_uChunkSideLength = 32;
|
static const uint16_t m_uChunkSideLength = 32;
|
||||||
|
|
||||||
PolyVox::Region m_regVolume;
|
PolyVox::Region m_regVolume;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user