Faster method to create a checkerboard pattern in a memory image view The image is written tile by tile, using a buffer to write the tile values at once.
Faster method to create a checkerboard pattern in a memory image view The image is written tile by tile, using a buffer to write the tile values at once.
#include <chrono>
#include <iostream>
#include <vector>
#include <iolink/view/ImageViewFactory.h>
std::shared_ptr<ImageView>
checkerBoard_Fast(const size_t sideLength)
{
auto image = ImageViewFactory::allocate(shape, dt);
const size_t tileCount = 10;
RegionXu64 tileRegion = RegionXu64::createFullRegion(tileSize);
std::vector<uint8_t> blackTileBuffer(tileRegion.
elementCount(), 0);
std::vector<uint8_t> whiteTileBuffer(tileRegion.
elementCount(), 255);
for (size_t i = 0; i < tileCount; ++i)
{
for (size_t j = 0; j < tileCount; ++j)
{
if ((i + j) % 2 == 0)
image->writeRegion(currentTileRegion, blackTileBuffer.data());
else
image->writeRegion(currentTileRegion, whiteTileBuffer.data());
}
}
return image;
}
int
main(int argc, char** argv)
{
std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
auto image = checkerBoard_Fast(1000);
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
std::cout << "Checkerboard (fast method) generated in "
<< std::chrono::duration_cast<std::chrono::microseconds>(end - begin).count() << " microseconds"
<< std::endl;
std::cout << "Generated ImageView: " << image->toString() << std::endl;
return EXIT_SUCCESS;
}
Stores information about a data type.
Definition DataType.h:162
A Region using dynamic vectors.
Definition RegionX.h:14
size_t elementCount() const
Returns the number of cells in this region.
A dynamically sized arithmetic vector.
Definition VectorX.h:18
All IOLink symbols are enclosed in this namespace.
Definition ArrayX.h:8