/*
* bench.c [cmd]
* description: the benchmarks as posted by Karl
* Help added by Pallando 93-02-13
*/
#include <std.h>
inherit DAEMON;
int cmd_bench (string arg)
{
string test;
#ifdef __MINGW__
write("This command is not available in Windows.");
return 1;
#endif
if (!arg) {
notify_fail ("usage: bench {1-5 or all}\n");
return 0;
}
test = "test";
switch (arg)
{
case "1":
write ("Empty loop benchmark\n");
call_other(this_object(),test + arg);
break;
case "2":
write ("Function call benchmark\n");
call_other(this_object(),test + arg);
break;
case "3":
write ("call_other benchmark\n");
call_other(this_object(),test + arg);
break;
case "4":
write ("String addition benchmark\n");
call_other(this_object(),test + arg);
break;
case "5":
write ("array addition benchmark\n");
call_other(this_object(),test + arg);
break;
case "all":
write ("doing all benchmarks\n");
cmd_bench("1");
cmd_bench("2");
cmd_bench("3");
cmd_bench("4");
cmd_bench("5");
break;
default:
write( "You must specify a number between 1 and 5.\n" );
break;
}
return 1;
}
void test1 ()
{
int i, time;
mapping r;
#ifndef __MINGW__
r = rusage();
time = r["usertime"];
for (i = 0; i < 10000; i++)
{
}
r = rusage();
write ("time taken: "+(r["usertime"] - time) + "\n");
#endif
}
void yy()
{
}
void test2 ()
{
int i, time;
mapping r;
#ifndef __MINGW__
r = rusage();
time = r["usertime"];
for (i = 0; i < 10000; i++)
{
yy();
}
r = rusage();
write ("time taken: "+(r["usertime"] - time) + "\n");
#endif
}
void test3 ()
{
int i, time;
mapping r;
#ifndef __MINGW__
r = rusage();
time = r["usertime"];
for (i = 0; i < 10000; i++)
{
this_object()->yy();
}
r = rusage();
write ("time taken: "+(r["usertime"] - time) + "\n");
#endif
}
void test4 ()
{
int i, time;
mapping r;
string s;
#ifndef __MINGW__
r = rusage();
time = r["usertime"];
for (i = 0; i < 10000; i++)
{
s = "xxxxxx";
s += s;
}
r = rusage();
write ("time taken: "+(r["usertime"] - time) + "\n");
#endif
}
void test5 ()
{
int i, time;
mapping r;
string *s;
#ifndef __MINGW__
r = rusage();
time = r["usertime"];
for (i = 0; i < 10000; i++)
{
s = allocate(10);
s += s;
}
r = rusage();
write ("time taken: "+(r["usertime"] - time) + "\n");
#endif
}
int help()
{
write( ""+
"Syntax: bench <arg>\n"+
"Effect: <arg> may be 1-5 or \"all\"\n"+
" Calculates Karl's Standard Mud Driver Benchmarks.\n"+
"1 - Empty loop\n"+
"2 - Function call\n"+
"3 - call_other\n"+
"4 - String addition\n"+
"5 - Array addition\n"+
"" );
return 1;
}