diff --git a/Tests/LibGfx/BenchmarkJPEGLoader.cpp b/Tests/LibGfx/BenchmarkJPEGLoader.cpp new file mode 100644 index 0000000000..b8ebd8557b --- /dev/null +++ b/Tests/LibGfx/BenchmarkJPEGLoader.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2023, Lucas Chollet + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include + +#ifdef AK_OS_SERENITY +# define TEST_INPUT(x) ("/usr/Tests/LibGfx/test-inputs/" x) +#else +# define TEST_INPUT(x) ("test-inputs/" x) +#endif + +// FIXME: Enable formatting when the patch will be mainstream +// https://github.com/llvm/llvm-project/commit/fd86789962964a98157e8159c3d95cdc241942e3 +// clang-format off +auto small_image = Core::File::open(TEST_INPUT("rgb24.jpg"sv), Core::File::OpenMode::Read).release_value()->read_until_eof().release_value(); +auto big_image = Core::File::open(TEST_INPUT("big_image.jpg"sv), Core::File::OpenMode::Read).release_value()->read_until_eof().release_value(); +auto rgb_image = Core::File::open(TEST_INPUT("rgb_components.jpg"sv), Core::File::OpenMode::Read).release_value()->read_until_eof().release_value(); +auto several_scans = Core::File::open(TEST_INPUT("several_scans.jpg"sv), Core::File::OpenMode::Read).release_value()->read_until_eof().release_value(); +// clang-format on + +BENCHMARK_CASE(small_image) +{ + auto plugin_decoder = MUST(Gfx::JPEGImageDecoderPlugin::create(small_image)); + MUST(plugin_decoder->frame(0)); +} + +BENCHMARK_CASE(big_image) +{ + auto plugin_decoder = MUST(Gfx::JPEGImageDecoderPlugin::create(big_image)); + MUST(plugin_decoder->frame(0)); +} + +BENCHMARK_CASE(rgb_image) +{ + auto plugin_decoder = MUST(Gfx::JPEGImageDecoderPlugin::create(rgb_image)); + MUST(plugin_decoder->frame(0)); +} + +BENCHMARK_CASE(several_scans) +{ + auto plugin_decoder = MUST(Gfx::JPEGImageDecoderPlugin::create(several_scans)); + MUST(plugin_decoder->frame(0)); +} diff --git a/Tests/LibGfx/CMakeLists.txt b/Tests/LibGfx/CMakeLists.txt index f86093f911..d3e8d8f156 100644 --- a/Tests/LibGfx/CMakeLists.txt +++ b/Tests/LibGfx/CMakeLists.txt @@ -1,5 +1,6 @@ set(TEST_SOURCES BenchmarkGfxPainter.cpp + BenchmarkJPEGLoader.cpp TestFontHandling.cpp TestICCProfile.cpp TestImageDecoder.cpp diff --git a/Tests/LibGfx/test-inputs/big_image.jpg b/Tests/LibGfx/test-inputs/big_image.jpg new file mode 100644 index 0000000000..27c4525b00 Binary files /dev/null and b/Tests/LibGfx/test-inputs/big_image.jpg differ