/*
- * "$Id: rasterbench.c 6649 2007-07-11 21:46:42Z mike $"
+ * "$Id: rasterbench.c 11558 2014-02-06 18:33:34Z msweet $"
*
- * Raster benchmark program for the Common UNIX Printing System (CUPS).
+ * Raster benchmark program for CUPS.
*
- * Copyright 2007 by Apple Inc.
- * Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
*
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law. Distribution and use rights are outlined in the file "LICENSE.txt"
- * which should have been included with this file. If this file is
- * file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
*
- * This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- * main() - Benchmark the raster read/write functions.
- * compute_median() - Compute the median time for a test.
- * read_test() - Benchmark the raster read functions.
- * write_test() - Benchmark the raster write functions.
+ * This file is subject to the Apple OS-Developed Software exception.
*/
/*
* Include necessary headers...
*/
-#include "raster.h"
+#include <config.h>
+#include <cups/raster.h>
#include <stdlib.h>
#include <sys/time.h>
#include <signal.h>
static double get_time(void);
static void read_test(int fd);
static int run_read_test(void);
-static void write_test(int fd);
+static void write_test(int fd, cups_mode_t mode);
/*
*/
int /* O - Exit status */
-main(void)
+main(int argc, /* I - Number of command-line args */
+ char *argv[]) /* I - Command-line arguments */
{
int i; /* Looping var */
int ras_fd, /* File descriptor for read process */
write_secs, /* Write time */
read_secs, /* Read time */
pass_secs[TEST_PASSES]; /* Total test times */
+ cups_mode_t mode; /* Write mode */
+
+
+ /*
+ * See if we have anything on the command-line...
+ */
+
+ if (argc > 2 || (argc == 2 && strcmp(argv[1], "-z")))
+ {
+ puts("Usage: rasterbench [-z]");
+ return (1);
+ }
+ mode = argc > 1 ? CUPS_RASTER_WRITE_COMPRESSED : CUPS_RASTER_WRITE;
/*
* Ignore SIGPIPE...
ras_fd = run_read_test();
start_secs = get_time();
- write_test(ras_fd);
+ write_test(ras_fd, mode);
write_secs = get_time();
printf(" %.3f write,", write_secs - start_secs);
static void
read_test(int fd) /* I - File descriptor to read from */
{
- int y; /* Looping var */
+ unsigned y; /* Looping var */
cups_raster_t *r; /* Raster stream */
- cups_page_header_t header; /* Page header */
+ cups_page_header2_t header; /* Page header */
unsigned char buffer[8 * TEST_WIDTH];
/* Read buffer */
return;
}
- while (cupsRasterReadHeader(r, &header))
+ while (cupsRasterReadHeader2(r, &header))
{
for (y = 0; y < header.cupsHeight; y ++)
cupsRasterReadPixels(r, buffer, header.cupsBytesPerLine);
*/
static void
-write_test(int fd) /* I - File descriptor to write to */
+write_test(int fd, /* I - File descriptor to write to */
+ cups_mode_t mode) /* I - Write mode */
{
- int page, x, y; /* Looping vars */
- int count; /* Number of bytes to set */
+ unsigned page, x, y; /* Looping vars */
+ unsigned count; /* Number of bytes to set */
cups_raster_t *r; /* Raster stream */
- cups_page_header_t header; /* Page header */
+ cups_page_header2_t header; /* Page header */
unsigned char data[32][8 * TEST_WIDTH];
/* Raster data to write */
* text with some whitespace.
*/
- srand(time(NULL));
+ CUPS_SRAND(time(NULL));
memset(data, 0, sizeof(data));
for (y = 0; y < 28; y ++)
{
- for (x = rand() & 127, count = (rand() & 15) + 1;
+ for (x = CUPS_RAND() & 127, count = (CUPS_RAND() & 15) + 1;
x < sizeof(data[0]);
x ++, count --)
{
if (count <= 0)
{
- x += (rand() & 15) + 1;
- count = (rand() & 15) + 1;
+ x += (CUPS_RAND() & 15) + 1;
+ count = (CUPS_RAND() & 15) + 1;
if (x >= sizeof(data[0]))
break;
}
- data[y][x] = rand();
+ data[y][x] = (unsigned char)CUPS_RAND();
}
}
* Test write speed...
*/
- if ((r = cupsRasterOpen(fd, CUPS_RASTER_WRITE)) == NULL)
+ if ((r = cupsRasterOpen(fd, mode)) == NULL)
{
perror("Unable to create raster output stream");
return;
header.cupsBitsPerPixel = (page & 1) ? 32 : 8;
}
- cupsRasterWriteHeader(r, &header);
+ cupsRasterWriteHeader2(r, &header);
for (y = 0; y < TEST_HEIGHT; y ++)
cupsRasterWritePixels(r, data[y & 31], header.cupsBytesPerLine);
/*
- * End of "$Id: rasterbench.c 6649 2007-07-11 21:46:42Z mike $".
+ * End of "$Id: rasterbench.c 11558 2014-02-06 18:33:34Z msweet $".
*/