Skip to content

Commit

Permalink
explicitly fail on errors during parsing in benchmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
grisumbras committed Sep 10, 2024
1 parent 9e6d3de commit 72b0e8a
Showing 1 changed file with 27 additions and 44 deletions.
71 changes: 27 additions & 44 deletions bench/bench.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,16 +294,13 @@ class boost_default_impl : public any_impl
std::size_t repeat) const override
{
auto const start = clock_type::now();
stream_parser p({}, popts);
parser p({}, popts);
while(repeat--)
{
p.reset();
system::error_code ec;
p.write(s.data(), s.size(), ec);
if(! ec)
p.finish(ec);
if(! ec)
auto jv = p.release();
p.write( s.data(), s.size() );
auto jv = p.release();
(void)jv;
}
return clock_type::now() - start;
}
Expand All @@ -320,29 +317,21 @@ class boost_default_impl : public any_impl

FILE* f = fopen(fi.name.data(), "rb");

system::error_code ec;
while( true )
{
std::size_t const sz = fread(s, 1, sizeof(s), f);
if( ferror(f) )
{
ec = std::io_errc::stream;
break;
}

p.write( s, sz, ec );
if( ec.failed() )
break;
p.write(s, sz);

if( feof(f) )
break;
}

if(! ec)
p.finish(ec);

if(! ec)
auto jv = p.release();
p.finish();
auto jv = p.release();
(void)jv;

fclose(f);
}
Expand Down Expand Up @@ -407,17 +396,14 @@ class boost_pool_impl : public any_impl
std::size_t repeat) const override
{
auto const start = clock_type::now();
stream_parser p({}, popts);
parser p({}, popts);
while(repeat--)
{
monotonic_resource mr;
p.reset(&mr);
system::error_code ec;
p.write(s.data(), s.size(), ec);
if(! ec)
p.finish(ec);
if(! ec)
auto jv = p.release();
p.write( s.data(), s.size() );
auto jv = p.release();
(void)jv;
}
return clock_type::now() - start;
}
Expand All @@ -435,29 +421,21 @@ class boost_pool_impl : public any_impl

FILE* f = fopen(fi.name.data(), "rb");

system::error_code ec;
while( true )
{
std::size_t const sz = fread(s, 1, sizeof(s), f);
if( ferror(f) )
{
ec = std::io_errc::stream;
break;
}

p.write( s, sz, ec );
if( ec.failed() )
break;
p.write(s, sz);

if( feof(f) )
break;
}

if(! ec)
p.finish(ec);

if(! ec)
auto jv = p.release();
p.finish();
auto jv = p.release();
(void)jv;

fclose(f);
}
Expand Down Expand Up @@ -601,7 +579,8 @@ class boost_null_impl : public any_impl
p.reset();
system::error_code ec;
p.write(s.data(), s.size(), ec);
BOOST_ASSERT(! ec);
if( ec.failed() )
throw system::system_error( ec );
}
return clock_type::now() - start;
}
Expand Down Expand Up @@ -636,8 +615,10 @@ class boost_null_impl : public any_impl
break;
}

BOOST_ASSERT(! ec);
fclose(f);

if( ec.failed() )
throw system::system_error( ec );
}
return clock_type::now() - start;
}
Expand Down Expand Up @@ -679,9 +660,8 @@ class boost_simple_impl : public any_impl
auto const start = clock_type::now();
while(repeat--)
{
system::error_code ec;
monotonic_resource mr;
auto jv = json::parse(s, ec, &mr, popts);
auto jv = json::parse(s, &mr, popts);
(void)jv;
}
return clock_type::now() - start;
Expand All @@ -693,10 +673,9 @@ class boost_simple_impl : public any_impl
auto const start = clock_type::now();
while(repeat--)
{
system::error_code ec;
std::ifstream is( fi.name, std::ios::in | std::ios::binary );
monotonic_resource mr;
auto jv = json::parse(is, ec, &mr, popts);
auto jv = json::parse(is, &mr, popts);
(void)jv;
}
return clock_type::now() - start;
Expand Down Expand Up @@ -749,6 +728,8 @@ class boost_operator_impl : public any_impl
value jv(&mr);
is.seekg(0);
is >> popts >> jv;
if( is.fail() )
throw system::system_error( std::io_errc::stream );
}
return clock_type::now() - start;
}
Expand All @@ -762,6 +743,7 @@ class boost_operator_impl : public any_impl
monotonic_resource mr;
value jv(&mr);
std::ifstream is( fi.name, std::ios::in | std::ios::binary );
is.exceptions(std::ios::failbit);
is >> popts >> jv;
}
return clock_type::now() - start;
Expand All @@ -779,6 +761,7 @@ class boost_operator_impl : public any_impl
while(repeat--)
{
std::ostringstream os;
os.exceptions(std::ios::failbit);
os << jv;
out = os.str();
}
Expand Down

0 comments on commit 72b0e8a

Please sign in to comment.