Add bench of small non empty constructor
This commit is contained in:
1 parent
91ae3fd4f2
commit
7fa9d375b8
1 file changed
+116
-23
+116
-23
@@ -127,6 +127,8 @@ int timeTest (double &res, int (*testfn) (int count), int count) {
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SMALLTESTSTRING1 ("hello")
|
||||||
|
|
||||||
#define TESTSTRING1 ("<sometag name=\"John Doe\" position=\"Executive VP Marketing\"/>")
|
#define TESTSTRING1 ("<sometag name=\"John Doe\" position=\"Executive VP Marketing\"/>")
|
||||||
|
|
||||||
#if defined (BENCH_CAN_USE_STL)
|
#if defined (BENCH_CAN_USE_STL)
|
||||||
@@ -150,6 +152,16 @@ int testSTL_nonemptyCtor (int count) {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int testSTL_smallnonemptyCtor (int count) {
|
||||||
|
int i, c = 0;
|
||||||
|
for (i=0; i < count; i++) {
|
||||||
|
std::string b (SMALLTESTSTRING1);
|
||||||
|
BARRIER();
|
||||||
|
c += b.length () ^ i;
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
int testSTL_cstrAssignment (int count) {
|
int testSTL_cstrAssignment (int count) {
|
||||||
int i, c = 0;
|
int i, c = 0;
|
||||||
std::string b;
|
std::string b;
|
||||||
@@ -242,6 +254,16 @@ int testCBS_nonemptyCtor (int count) {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int testCBS_smallnonemptyCtor (int count) {
|
||||||
|
int i, c = 0;
|
||||||
|
for (i=0; i < count; i++) {
|
||||||
|
CBString b (SMALLTESTSTRING1);
|
||||||
|
BARRIER();
|
||||||
|
c += b.length () ^i;
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
int testCBS_cstrAssignment (int count) {
|
int testCBS_cstrAssignment (int count) {
|
||||||
int i, c = 0;
|
int i, c = 0;
|
||||||
CBString b;
|
CBString b;
|
||||||
@@ -335,6 +357,17 @@ int testSRT_nonemptyCtor (int count) {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int testSRT_smallnonemptyCtor (int count) {
|
||||||
|
int i, c = 0;
|
||||||
|
for (c=i=0; i < count; i++) {
|
||||||
|
srt_string *b = ss_dup_c(SMALLTESTSTRING1);
|
||||||
|
BARRIER();
|
||||||
|
c += ss_size(b) ^i;
|
||||||
|
ss_free(&b);
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
int testSRT_cstrAssignment (int count) {
|
int testSRT_cstrAssignment (int count) {
|
||||||
int i, c = 0;
|
int i, c = 0;
|
||||||
srt_string *b = ss_alloc(0);
|
srt_string *b = ss_alloc(0);
|
||||||
@@ -421,6 +454,18 @@ int testMLIB_nonemptyCtor (int count) {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int testMLIB_smallnonemptyCtor (int count) {
|
||||||
|
int i, c = 0;
|
||||||
|
for (c=i=0; i < count; i++) {
|
||||||
|
string_t b;
|
||||||
|
string_init_set_str(b, SMALLTESTSTRING1);
|
||||||
|
BARRIER();
|
||||||
|
c += string_size(b) ^i;
|
||||||
|
string_clear(b);
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
int testMLIB_cstrAssignment (int count) {
|
int testMLIB_cstrAssignment (int count) {
|
||||||
int i, c = 0;
|
int i, c = 0;
|
||||||
string_t b;
|
string_t b;
|
||||||
@@ -529,6 +574,18 @@ int testSDS_nonemptyCtor (int count) {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int testSDS_smallnonemptyCtor (int count) {
|
||||||
|
int i, c = 0;
|
||||||
|
for (c=i=0; i < count; i++) {
|
||||||
|
sds b;
|
||||||
|
b = sdsnew(SMALLTESTSTRING1);
|
||||||
|
BARRIER();
|
||||||
|
c += sdslen(b) ^i;
|
||||||
|
sdsfree(b);
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
int testSDS_cstrAssignment (int count) {
|
int testSDS_cstrAssignment (int count) {
|
||||||
int i, c = 0;
|
int i, c = 0;
|
||||||
sds b;
|
sds b;
|
||||||
@@ -623,6 +680,18 @@ int testRAPIDSTRING_nonemptyCtor (int count) {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int testRAPIDSTRING_smallnonemptyCtor (int count) {
|
||||||
|
int i, c = 0;
|
||||||
|
for (c=i=0; i < count; i++) {
|
||||||
|
rapidstring b;
|
||||||
|
rs_init_w(&b, SMALLTESTSTRING1);
|
||||||
|
BARRIER();
|
||||||
|
c += rs_len(&b) ^i;
|
||||||
|
rs_free(&b);
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
int testRAPIDSTRING_cstrAssignment (int count) {
|
int testRAPIDSTRING_cstrAssignment (int count) {
|
||||||
int i, c = 0;
|
int i, c = 0;
|
||||||
rapidstring b;
|
rapidstring b;
|
||||||
@@ -677,9 +746,9 @@ int testRAPIDSTRING_concat (int count) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define NTESTS 7
|
#define NTESTS 8
|
||||||
struct flags {
|
struct flags {
|
||||||
int runtest[NTESTS];
|
int runtest[NTESTS];
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -687,7 +756,7 @@ print(const char library[], const char function[], double cps)
|
|||||||
{
|
{
|
||||||
if (print_csv == false)
|
if (print_csv == false)
|
||||||
{
|
{
|
||||||
printf ("%16s %24s : %20.1f per second\n", library, function, cps);
|
printf ("%16s %30s : %20.1f per second\n", library, function, cps);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -709,22 +778,26 @@ int benchTest (const struct flags * runflags) {
|
|||||||
print ("std::string", "non-empty constructor", cps);
|
print ("std::string", "non-empty constructor", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[2]) {
|
if (runflags->runtest[2]) {
|
||||||
|
c += timeTest (cps, testSTL_smallnonemptyCtor, 100000);
|
||||||
|
print ("std::string", "small non-empty constructor", cps);
|
||||||
|
}
|
||||||
|
if (runflags->runtest[3]) {
|
||||||
c += timeTest (cps, testSTL_cstrAssignment, 100000);
|
c += timeTest (cps, testSTL_cstrAssignment, 100000);
|
||||||
print ("std::string", "char * assignment", cps);
|
print ("std::string", "char * assignment", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[3]) {
|
if (runflags->runtest[4]) {
|
||||||
c += timeTest (cps, testSTL_extraction, 100000);
|
c += timeTest (cps, testSTL_extraction, 100000);
|
||||||
print ("std::string", "char extraction", cps);
|
print ("std::string", "char extraction", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[4]) {
|
if (runflags->runtest[5]) {
|
||||||
c += timeTest (cps, testSTL_scan, 100000);
|
c += timeTest (cps, testSTL_scan, 100000);
|
||||||
print ("std::string", "scan", cps);
|
print ("std::string", "scan", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[5]) {
|
if (runflags->runtest[6]) {
|
||||||
c += timeTest (cps, testSTL_concat, 10);
|
c += timeTest (cps, testSTL_concat, 10);
|
||||||
print ("std::string", "concatenation", cps * 250);
|
print ("std::string", "concatenation", cps * 250);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[6]) {
|
if (runflags->runtest[7]) {
|
||||||
c += timeTest (cps, testSTL_replace, 10000);
|
c += timeTest (cps, testSTL_replace, 10000);
|
||||||
print ("std::string", "replace", cps);
|
print ("std::string", "replace", cps);
|
||||||
}
|
}
|
||||||
@@ -740,22 +813,26 @@ int benchTest (const struct flags * runflags) {
|
|||||||
print ("CBString", "non-empty constructor", cps);
|
print ("CBString", "non-empty constructor", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[2]) {
|
if (runflags->runtest[2]) {
|
||||||
|
c += timeTest (cps, testCBS_smallnonemptyCtor, 100000);
|
||||||
|
print ("CBString", "small non-empty constructor", cps);
|
||||||
|
}
|
||||||
|
if (runflags->runtest[3]) {
|
||||||
c += timeTest (cps, testCBS_cstrAssignment, 100000);
|
c += timeTest (cps, testCBS_cstrAssignment, 100000);
|
||||||
print ("CBString", "char * assignment", cps);
|
print ("CBString", "char * assignment", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[3]) {
|
if (runflags->runtest[4]) {
|
||||||
c += timeTest (cps, testCBS_extraction, 100000);
|
c += timeTest (cps, testCBS_extraction, 100000);
|
||||||
print ("CBString", "char extraction", cps);
|
print ("CBString", "char extraction", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[4]) {
|
if (runflags->runtest[5]) {
|
||||||
c += timeTest (cps, testCBS_scan, 100000);
|
c += timeTest (cps, testCBS_scan, 100000);
|
||||||
print ("CBString", "scan", cps);
|
print ("CBString", "scan", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[5]) {
|
if (runflags->runtest[6]) {
|
||||||
c += timeTest (cps, testCBS_concat, 10);
|
c += timeTest (cps, testCBS_concat, 10);
|
||||||
print ("CBString", "concatenation", cps * 250);
|
print ("CBString", "concatenation", cps * 250);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[6]) {
|
if (runflags->runtest[7]) {
|
||||||
c += timeTest (cps, testCBS_replace, 10000);
|
c += timeTest (cps, testCBS_replace, 10000);
|
||||||
print ("CBString", "replace", cps);
|
print ("CBString", "replace", cps);
|
||||||
}
|
}
|
||||||
@@ -771,18 +848,22 @@ int benchTest (const struct flags * runflags) {
|
|||||||
print ("LIBSRT", "non-empty constructor", cps);
|
print ("LIBSRT", "non-empty constructor", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[2]) {
|
if (runflags->runtest[2]) {
|
||||||
|
c += timeTest (cps, testSRT_smallnonemptyCtor, 100000);
|
||||||
|
print ("LIBSRT", "small non-empty constructor", cps);
|
||||||
|
}
|
||||||
|
if (runflags->runtest[3]) {
|
||||||
c += timeTest (cps, testSRT_cstrAssignment, 100000);
|
c += timeTest (cps, testSRT_cstrAssignment, 100000);
|
||||||
print ("LIBSRT", "char * assignment", cps);
|
print ("LIBSRT", "char * assignment", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[3]) {
|
if (runflags->runtest[4]) {
|
||||||
c += timeTest (cps, testSRT_extraction, 100000);
|
c += timeTest (cps, testSRT_extraction, 100000);
|
||||||
print ("LIBSRT", "char extraction", cps);
|
print ("LIBSRT", "char extraction", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[4]) {
|
if (runflags->runtest[5]) {
|
||||||
c += timeTest (cps, testSRT_scan, 100000);
|
c += timeTest (cps, testSRT_scan, 100000);
|
||||||
print ("LIBSRT", "scan", cps);
|
print ("LIBSRT", "scan", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[5]) {
|
if (runflags->runtest[6]) {
|
||||||
c += timeTest (cps, testSRT_concat, 10);
|
c += timeTest (cps, testSRT_concat, 10);
|
||||||
print ("LIBSRT", "concatenation", cps * 250);
|
print ("LIBSRT", "concatenation", cps * 250);
|
||||||
}
|
}
|
||||||
@@ -798,22 +879,26 @@ int benchTest (const struct flags * runflags) {
|
|||||||
print ("M*LIB", "non-empty constructor", cps);
|
print ("M*LIB", "non-empty constructor", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[2]) {
|
if (runflags->runtest[2]) {
|
||||||
|
c += timeTest (cps, testMLIB_smallnonemptyCtor, 100000);
|
||||||
|
print ("M*LIB", "small non-empty constructor", cps);
|
||||||
|
}
|
||||||
|
if (runflags->runtest[3]) {
|
||||||
c += timeTest (cps, testMLIB_cstrAssignment, 100000);
|
c += timeTest (cps, testMLIB_cstrAssignment, 100000);
|
||||||
print ("M*LIB", "Char * assignment", cps);
|
print ("M*LIB", "Char * assignment", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[3]) {
|
if (runflags->runtest[4]) {
|
||||||
c += timeTest (cps, testMLIB_extraction, 100000);
|
c += timeTest (cps, testMLIB_extraction, 100000);
|
||||||
print ("M*LIB", "char extraction", cps);
|
print ("M*LIB", "char extraction", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[4]) {
|
if (runflags->runtest[5]) {
|
||||||
c += timeTest (cps, testMLIB_scan, 100000);
|
c += timeTest (cps, testMLIB_scan, 100000);
|
||||||
print ("M*LIB", "scan", cps);
|
print ("M*LIB", "scan", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[5]) {
|
if (runflags->runtest[6]) {
|
||||||
c += timeTest (cps, testMLIB_concat, 10);
|
c += timeTest (cps, testMLIB_concat, 10);
|
||||||
print ("M*LIB", "concatenation", cps * 250);
|
print ("M*LIB", "concatenation", cps * 250);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[6]) {
|
if (runflags->runtest[7]) {
|
||||||
c += timeTest (cps, testMLIB_replace, 10000);
|
c += timeTest (cps, testMLIB_replace, 10000);
|
||||||
print ("M*LIB", "replace", cps);
|
print ("M*LIB", "replace", cps);
|
||||||
}
|
}
|
||||||
@@ -829,18 +914,22 @@ int benchTest (const struct flags * runflags) {
|
|||||||
print ("SDS", "non-empty constructor", cps);
|
print ("SDS", "non-empty constructor", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[2]) {
|
if (runflags->runtest[2]) {
|
||||||
|
c += timeTest (cps, testSDS_smallnonemptyCtor, 100000);
|
||||||
|
print ("SDS", "small non-empty constructor", cps);
|
||||||
|
}
|
||||||
|
if (runflags->runtest[3]) {
|
||||||
c += timeTest (cps, testSDS_cstrAssignment, 100000);
|
c += timeTest (cps, testSDS_cstrAssignment, 100000);
|
||||||
print ("SDS", "char * assignment", cps);
|
print ("SDS", "char * assignment", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[3]) {
|
if (runflags->runtest[4]) {
|
||||||
c += timeTest (cps, testSDS_extraction, 100000);
|
c += timeTest (cps, testSDS_extraction, 100000);
|
||||||
print ("SDS", "char extraction", cps);
|
print ("SDS", "char extraction", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[4]) {
|
if (runflags->runtest[5]) {
|
||||||
c += timeTest (cps, testSDS_scan, 100000);
|
c += timeTest (cps, testSDS_scan, 100000);
|
||||||
print ("SDS", "scan", cps);
|
print ("SDS", "scan", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[5]) {
|
if (runflags->runtest[6]) {
|
||||||
c += timeTest (cps, testSDS_concat, 10);
|
c += timeTest (cps, testSDS_concat, 10);
|
||||||
print ("SDS", "concatenation", cps * 250);
|
print ("SDS", "concatenation", cps * 250);
|
||||||
}
|
}
|
||||||
@@ -856,14 +945,18 @@ int benchTest (const struct flags * runflags) {
|
|||||||
print ("RAPIDSTRING", "non-empty constructor", cps);
|
print ("RAPIDSTRING", "non-empty constructor", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[2]) {
|
if (runflags->runtest[2]) {
|
||||||
|
c += timeTest (cps, testRAPIDSTRING_smallnonemptyCtor, 100000);
|
||||||
|
print ("RAPIDSTRING", "small non-empty constructor", cps);
|
||||||
|
}
|
||||||
|
if (runflags->runtest[3]) {
|
||||||
c += timeTest (cps, testRAPIDSTRING_cstrAssignment, 100000);
|
c += timeTest (cps, testRAPIDSTRING_cstrAssignment, 100000);
|
||||||
print ("RAPIDSTRING", "char * assignment", cps);
|
print ("RAPIDSTRING", "char * assignment", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[3]) {
|
if (runflags->runtest[4]) {
|
||||||
c += timeTest (cps, testRAPIDSTRING_extraction, 100000);
|
c += timeTest (cps, testRAPIDSTRING_extraction, 100000);
|
||||||
print ("RAPIDSTRING", "char extraction", cps);
|
print ("RAPIDSTRING", "char extraction", cps);
|
||||||
}
|
}
|
||||||
if (runflags->runtest[5]) {
|
if (runflags->runtest[6]) {
|
||||||
c += timeTest (cps, testRAPIDSTRING_concat, 10);
|
c += timeTest (cps, testRAPIDSTRING_concat, 10);
|
||||||
print ("RAPIDSTRING", "concatenation", cps * 250);
|
print ("RAPIDSTRING", "concatenation", cps * 250);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user