Initial benchmark exe

This commit is contained in:
Mike Dussault 2021-10-11 19:44:58 +00:00
parent 614750963b
commit 3723e136b1
2 changed files with 84 additions and 0 deletions

View File

@ -107,6 +107,7 @@ endif()
add_executable(zmc zmc.cpp)
add_executable(zms zms.cpp)
add_executable(zmu zmu.cpp)
add_executable(zmbenchmark zmbenchmark.cpp)
target_link_libraries(zmc
PRIVATE
@ -129,6 +130,13 @@ target_link_libraries(zmu
${ZM_EXTRA_LIBS}
${CMAKE_DL_LIBS})
target_link_libraries(zmbenchmark
PRIVATE
zm-core-interface
zm
${ZM_EXTRA_LIBS}
${CMAKE_DL_LIBS})
# Generate man files for the binaries destined for the bin folder
if(BUILD_MAN)
foreach(CBINARY zmc zmu)

76
src/zmbenchmark.cpp Normal file
View File

@ -0,0 +1,76 @@
//
// ZoneMinder Benchmark, $Date$, $Revision$
// Copyright (C) 2001-2008 Philip Coombes
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
#include <memory>
#include <stdlib.h>
#include "zm_image.h"
#include "zm_zone.h"
//
// Generate a greyscale image that simulates a delta that can be fed to
// Zone::CheckAlarms.
//
// Args:
// minVal: 0-255 value telling the minimum (random) value to initialize
// all the pixels to.
// maxVal: 0-255 value telling the maximum (random) value to initialize
// all the pixels to.
// width: The width of the new image.
// height: The height of the new image.
//
// Return:
// An image with all pixels initialized to values in the [minVal,maxVal] range.
//
std::shared_ptr<Image> GenerateDeltaImage(
int minVal,
int maxVal,
int width = 3840,
int height = 2160) {
// Create the image.
Image *image = new Image(
width,
height,
ZM_COLOUR_GRAY8,
ZM_SUBPIX_ORDER_NONE);
const int range = maxVal - minVal + 1;
for (int y=0; y < height; y++)
{
uint8_t *row = (uint8_t*)image->Buffer(0, y);
for (int x=0; x < width; x++)
row[x] = (rand() * range) / RAND_MAX + minVal;
}
return image;
}
int main(int argc, char *argv[]) {
srand(111);
RunZoneBenchmark("0%% delta", GenerateDeltaImage(0, 0));
RunZoneBenchmark("50%% delta", GenerateDeltaImage(0, 255));
RunZoneBenchmark("100%% delta", GenerateDeltaImage(255, 255));
return 0;
}