aboutsummaryrefslogtreecommitdiff
path: root/contrib/sendmail/libsm/b-strcmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/libsm/b-strcmp.c')
-rw-r--r--contrib/sendmail/libsm/b-strcmp.c152
1 files changed, 0 insertions, 152 deletions
diff --git a/contrib/sendmail/libsm/b-strcmp.c b/contrib/sendmail/libsm/b-strcmp.c
deleted file mode 100644
index c7dcb88b3a62..000000000000
--- a/contrib/sendmail/libsm/b-strcmp.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2000-2001, 2004 Sendmail, Inc. and its suppliers.
- * All rights reserved.
- *
- * By using this file, you agree to the terms and conditions set
- * forth in the LICENSE file which can be found at the top level of
- * the sendmail distribution.
- */
-
-#include <sm/gen.h>
-SM_RCSID("@(#)$Id: b-strcmp.c,v 1.14 2005/06/14 23:07:20 ca Exp $")
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sm/time.h>
-#include <sm/string.h>
-
-#define toseconds(x, y) (x.tv_sec - y.tv_sec)
-#define SIZE 512
-#define LOOPS 4000000L /* initial number of loops */
-#define MAXTIME 30L /* "maximum" time to run single test */
-
-void fatal __P((char *));
-void purpose __P((void));
-int main __P((int, char *[]));
-
-void
-fatal(str)
- char *str;
-{
- perror(str);
- exit(1);
-}
-
-void
-purpose()
-{
- printf("This program benchmarks the performance differences between\n");
- printf("strcasecmp() and sm_strcasecmp().\n");
- printf("These tests may take several minutes to complete.\n");
-}
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- long a;
- int k;
- bool doit = false;
- long loops;
- long j;
- long one, two;
- struct timeval t1, t2;
- char src1[SIZE], src2[SIZE];
-
-# define OPTIONS "d"
- while ((k = getopt(argc, argv, OPTIONS)) != -1)
- {
- switch ((char) k)
- {
- case 'd':
- doit = true;
- break;
-
- default:
- break;
- }
- }
-
- if (!doit)
- {
- purpose();
- printf("If you want to run it, specify -d as option.\n");
- return 0;
- }
-
- /* Run-time comments to the user */
- purpose();
- printf("\n");
- for (k = 0; k < 3; k++)
- {
- switch (k)
- {
- case 0:
- (void) sm_strlcpy(src1, "1234567890", SIZE);
- (void) sm_strlcpy(src2, "1234567890", SIZE);
- break;
- case 1:
- (void) sm_strlcpy(src1, "1234567890", SIZE);
- (void) sm_strlcpy(src2, "1234567891", SIZE);
- break;
- case 2:
- (void) sm_strlcpy(src1, "1234567892", SIZE);
- (void) sm_strlcpy(src2, "1234567891", SIZE);
- break;
- }
- printf("Test %d: strcasecmp(%s, %s) versus sm_strcasecmp()\n",
- k, src1, src2);
- loops = LOOPS;
- for (;;)
- {
- j = 0;
- if (gettimeofday(&t1, NULL) < 0)
- fatal("gettimeofday");
- for (a = 0; a < loops; a++)
- j += strcasecmp(src1, src2);
- if (gettimeofday(&t2, NULL) < 0)
- fatal("gettimeofday");
- one = toseconds(t2, t1);
- printf("\tstrcasecmp() result: %ld seconds [%ld]\n",
- one, j);
-
- j = 0;
- if (gettimeofday(&t1, NULL) < 0)
- fatal("gettimeofday");
- for (a = 0; a < loops; a++)
- j += sm_strcasecmp(src1, src2);
- if (gettimeofday(&t2, NULL) < 0)
- fatal("gettimeofday");
- two = toseconds(t2, t1);
- printf("\tsm_strcasecmp() result: %ld seconds [%ld]\n",
- two, j);
-
- if (abs(one - two) > 2)
- break;
- loops += loops;
- if (loops < 0L || one > MAXTIME)
- {
- printf("\t\t** results too close: no decision\n");
- break;
- }
- else
- {
- printf("\t\t** results too close redoing test %ld times **\n",
- loops);
- }
- }
- }
-
- printf("\n\n");
- printf("Interpreting the results:\n");
- printf("\tFor differences larger than 2 seconds, the lower value is\n");
- printf("\tbetter and that function should be used for performance\n");
- printf("\treasons.\n\n");
- printf("This program will re-run the tests when the difference is\n");
- printf("less than 2 seconds.\n");
- printf("The result will vary depending on the compiler optimization\n"); printf("level used. Compiling the sendmail libsm library with a\n");
- printf("better optimization level can change the results.\n");
- return 0;
-}