#include "prism_engineering/allocator_lab.hpp" #include #include #include #include using namespace prism_engineering; int main(int argc,char** argv) { try { if(argc>2)throw std::runtime_error{"usage: prism-allocators [image.ppm]"}; const auto baseline=render_plain(); std::cout<<"policy,run,request_calls,requested_bytes,peak_requested,upstream_calls,upstream_requested,upstream_peak,retained_upstream,after_release,elapsed_ns,checksum\n"; for(const auto choice:{ResourceChoice::ordinary,ResourceChoice::monotonic,ResourceChoice::pool}) { const char* name=choice==ResourceChoice::ordinary?"ordinary":choice==ResourceChoice::monotonic?"monotonic":"pool"; for(int run=0;run<10;++run) { const auto result=measure_render(choice); if(result.image.pixels!=baseline.pixels)throw std::runtime_error{"allocation policy changed rendered pixels"}; std::cout<(pixel.r),static_cast(pixel.g),static_cast(pixel.b)}; output.write(bytes,3); } output.flush(); output.close(); if(!output)throw std::runtime_error{"image write failed"}; } return 0; } catch(const std::exception& error) { std::cerr<