#include "bench_framework.hpp" #include "compare_images.hpp" #include class test : public benchmark::test_case { std::shared_ptr im_; public: test(mapnik::parameters const& params) : test_case(params) { std::string filename("./benchmark/data/multicolor.png"); std::unique_ptr reader(mapnik::get_image_reader(filename, "png")); if (!reader.get()) { throw mapnik::image_reader_exception("Failed to load: " + filename); } im_ = std::make_shared(reader->width(), reader->height()); reader->read(0, 0, *im_); } bool validate() const { std::string expected("./benchmark/data/multicolor-hextree-expected.png"); std::string actual("./benchmark/data/multicolor-hextree-actual.png"); mapnik::save_to_file(*im_, actual, "png8:m=h:z=1"); return benchmark::compare_images(actual, expected); } bool operator()() const { std::string out; for (std::size_t i = 0; i < iterations_; ++i) { out.clear(); out = mapnik::save_to_string(*im_, "png8:m=h:z=1"); } return true; } }; BENCHMARK(test, "encoding multicolor png")