Browse Source

some more tuning

root 10 years ago
parent
commit
d73472e5db

+ 1 - 1
frameworks/C++/ULib/install.sh

@@ -41,7 +41,7 @@ if [ ! -f "benchmark.cfg" ]; then
   cat <<EOF >benchmark.cfg
 userver {
  PORT 8080
- PREFORK_CHILD 8
+ PREFORK_CHILD 4
  MAX_KEEP_ALIVE 1023
  LISTEN_BACKLOG 16384
  CLIENT_FOR_PARALLELIZATION 256

+ 1 - 1
frameworks/C++/ULib/setup.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-export UMEMPOOL="152,85,0,37,8330,105,-17,-22,40"
+export UMEMPOOL="176,100,0,37,1110,105,-17,-22,40"
 
 # 1. Change ULib Server configuration
 sed -i "s|PREFORK_CHILD .*|PREFORK_CHILD ${MAX_THREADS}|g" ${IROOT}/ULib/benchmark.cfg

+ 2 - 1
frameworks/C++/ULib/setup_mysql.sh

@@ -1,9 +1,10 @@
 #!/bin/bash
 
-export UMEMPOOL="152,85,0,37,8330,105,-17,-22,40"
 export ORM_DRIVER="mysql"
 export ORM_OPTION="host=${DBHOST} user=benchmarkdbuser password=benchmarkdbpass character-set=utf8 dbname=hello_world"
 
+export UMEMPOOL="176,100,0,37,1110,105,-17,-22,40"
+
 # 1. Change ULib Server configuration
 sed -i "s|PREFORK_CHILD .*|PREFORK_CHILD ${MAX_THREADS}|g" $IROOT/ULib/benchmark.cfg
 

+ 2 - 1
frameworks/C++/ULib/setup_postgres.sh

@@ -1,9 +1,10 @@
 #!/bin/bash
 
-export UMEMPOOL="152,85,0,37,8330,105,-17,-22,40"
 export ORM_DRIVER="pgsql"
 export ORM_OPTION="host=${DBHOST} user=benchmarkdbuser password=benchmarkdbpass dbname=hello_world client_encoding=UTF8"
 
+export UMEMPOOL="176,100,0,37,1110,105,-17,-22,40"
+
 # 1. Change ULib Server configuration
 sed -i "s|PREFORK_CHILD .*|PREFORK_CHILD ${MAX_THREADS}|g" $IROOT/ULib/benchmark.cfg
 

+ 2 - 1
frameworks/C++/ULib/setup_sqlite.sh

@@ -1,9 +1,10 @@
 #!/bin/bash
 
-export UMEMPOOL="152,85,0,37,8330,105,-17,-22,40"
 export ORM_DRIVER="sqlite"
 export ORM_OPTION="host=${DBHOST} user=benchmarkdbuser password=benchmarkdbpass character-set=utf8 dbname=${ULIB_ROOT}/db/%.*s"
 
+export UMEMPOOL="176,100,0,37,1110,105,-17,-22,40"
+
 # 1. Change ULib Server configuration
 sed -i "s|PREFORK_CHILD .*|PREFORK_CHILD ${MAX_THREADS}|g" ${IROOT}/ULib/benchmark.cfg
 

+ 32 - 29
frameworks/C++/ULib/src/db.usp

@@ -1,53 +1,56 @@
+<!--#
+Test type 2: Single database query
+TechEmpower Web Framework Benchmarks
+-->
 <!--#declaration
 #include "world.h"
 
-#ifndef AS_cpoll_cppsp_DO
-static UValue*	pvalue;
-#endif
-static World*			 pworld_db;
-static UOrmSession*	 psql_db;
+static World*         pworld_db;
+static UOrmSession*   psql_db;
 static UOrmStatement* pstmt_db;
 
-static void usp_init_db()
-{
-	U_TRACE(5, "::usp_init_db()")
-
-	pworld_db = U_NEW(World);
-
 #ifndef AS_cpoll_cppsp_DO
-	pvalue = U_NEW(UValue(OBJECT_VALUE));
+static UValue* pvalue;
 #endif
-}
 
 static void usp_fork_db()
 {
-	U_TRACE(5, "::usp_fork_db()")
+   U_TRACE(5, "::usp_fork_db()")
+
+   psql_db = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
+
+   if (psql_db->isReady())
+      {
+      pstmt_db = U_NEW(UOrmStatement(*psql_db, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
 
-	psql_db = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
+      if (pstmt_db == 0) U_ERROR("usp_fork_db(): we cound't connect to db");
 
-	if (psql_db->isReady())
-		{
-		pstmt_db	= U_NEW(UOrmStatement(*psql_db, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
+      pworld_db = U_NEW(World);
 
-		if (pstmt_db == 0) U_ERROR("usp_fork_db(): we cound't connect to db");
+      pstmt_db->use( pworld_db->id);
+      pstmt_db->into(pworld_db->randomNumber);
 
-		pstmt_db->use( pworld_db->id);
-		pstmt_db->into(pworld_db->randomNumber);
-		}
+#  ifndef AS_cpoll_cppsp_DO
+      pvalue = U_NEW(UValue(OBJECT_VALUE));
+#  endif
+      }
 }
 
 #ifdef DEBUG
 static void usp_end_db()
 {
-	U_TRACE(5, "::usp_end_db()")
+   U_TRACE(5, "::usp_end_db()")
 
-	if (pstmt_db) delete pstmt_db;
+   if (pstmt_db)
+      {
+      delete  pstmt_db;
+      delete   psql_db;
+      delete pworld_db;
 
-	delete psql_db;
-	delete pworld_db;
-#ifndef AS_cpoll_cppsp_DO
-	delete pvalue;
-#endif
+#  ifndef AS_cpoll_cppsp_DO
+      delete pvalue;
+#  endif
+      }
 }
 #endif
 -->

+ 40 - 37
frameworks/C++/ULib/src/fortune.usp

@@ -1,48 +1,51 @@
+<!--#
+Test type 4: Fortunes
+TechEmpower Web Framework Benchmarks
+-->
 <!--#declaration
 #include "fortune.h"
 
-static UOrmSession*		  psql_fortune;
-static UOrmStatement*	  pstmt_fortune;
-static Fortune*			  pfortune;
+static Fortune*           pfortune;
 static UString*           pmessage;
+static UOrmSession*       psql_fortune;
+static UOrmStatement*     pstmt_fortune;
 static UVector<Fortune*>* pvfortune;
 
-static void usp_init_fortune()
+static void usp_fork_fortune()
 {
-	U_TRACE(5, "::usp_init_fortune()")
+   U_TRACE(5, "::usp_fork_fortune()")
 
-	pfortune  = U_NEW(Fortune);
-	pvfortune = U_NEW(UVector<Fortune*>);
-	pmessage  = U_NEW(U_STRING_FROM_CONSTANT("Additional fortune added at request time."));
-}
+   psql_fortune = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("fortune")));
 
-static void usp_fork_fortune()
-{
-	U_TRACE(5, "::usp_fork_fortune()")
+   if (psql_fortune->isReady())
+      {
+      pstmt_fortune = U_NEW(UOrmStatement(*psql_fortune, U_CONSTANT_TO_PARAM("SELECT id, message FROM Fortune")));
 
-	psql_fortune  = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("fortune")));
+      if (pstmt_fortune == 0) U_ERROR("usp_fork_fortune(): we cound't connect to db");
 
-	if (psql_fortune->isReady())
-		{
-		pstmt_fortune = U_NEW(UOrmStatement(*psql_fortune, U_CONSTANT_TO_PARAM("SELECT id, message FROM Fortune")));
+      pfortune = U_NEW(Fortune);
 
-		if (pstmt_fortune == 0) U_ERROR("usp_fork_fortune(): we cound't connect to db");
+      pstmt_fortune->into(*pfortune);
 
-		pstmt_fortune->into(*pfortune);
-		}
+      pmessage  = U_NEW(U_STRING_FROM_CONSTANT("Additional fortune added at request time."));
+      pvfortune = U_NEW(UVector<Fortune*>);
+      }
 }
 
 #ifdef DEBUG
 static void usp_end_fortune()
 {
-	U_TRACE(5, "::usp_end_fortune()")
+   U_TRACE(5, "::usp_end_fortune()")
 
-	if (pstmt_fortune) delete pstmt_fortune;
+   if (pstmt_fortune)
+   {
+   delete pstmt_fortune;
 
-	delete psql_fortune;
-	delete pvfortune;
-	delete pfortune;
-	delete pmessage;
+   delete psql_fortune;
+   delete pvfortune;
+   delete pfortune;
+   delete pmessage;
+   }
 }
 #endif
 -->
@@ -52,22 +55,22 @@ unsigned char encoded[1024];
 
 pstmt_fortune->execute();
 
-	  pvfortune->push_back(U_NEW(Fortune(0, *pmessage)));
-do	{ pvfortune->push_back(U_NEW(Fortune(*pfortune))); } while (pstmt_fortune->nextRow());
+     pvfortune->push_back(U_NEW(Fortune(0, *pmessage)));
+do { pvfortune->push_back(U_NEW(Fortune(*pfortune))); } while (pstmt_fortune->nextRow());
 
 pvfortune->sort(Fortune::cmp_obj);
 
 for (uint32_t i = 0, n = pvfortune->size(); i < n; ++i)
-	{
-	elem = (*pvfortune)[i];
-
-	USP_PRINTF_ADD(
-		"<tr>"
-		"<td>%u</td>"
-		"<td>%.*s</td>"
-		"</tr>",
-		elem->id, u_xml_encode((const unsigned char*)U_STRING_TO_PARAM(elem->message), encoded), encoded);
-	}
+   {
+   elem = (*pvfortune)[i];
+
+   USP_PRINTF_ADD(
+      "<tr>"
+      "<td>%u</td>"
+      "<td>%.*s</td>"
+      "</tr>",
+      elem->id, u_xml_encode((const unsigned char*)U_STRING_TO_PARAM(elem->message), encoded), encoded);
+   }
 
 pvfortune->clear();
 --></table></body></html>

+ 6 - 0
frameworks/C++/ULib/src/json.usp

@@ -1,3 +1,7 @@
+<!--#
+Test type 1: JSON serialization
+TechEmpower Web Framework Benchmarks
+-->
 <!--#declaration
 #ifdef AS_cpoll_cppsp_DO
 #undef AS_cpoll_cppsp_DO
@@ -19,6 +23,7 @@ static void usp_init_json()
 #endif
 }
 
+#ifdef DEBUG
 static void usp_end_json()
 {
    U_TRACE(5, "::usp_end_json()")
@@ -28,6 +33,7 @@ static void usp_end_json()
    delete pvalue;
 #endif
 }
+#endif
 -->
 <!--#header
 Content-Type: application/json; charset=UTF-8

+ 43 - 39
frameworks/C++/ULib/src/query.usp

@@ -1,56 +1,60 @@
+<!--#
+Test type 3: Multiple database queries
+TechEmpower Web Framework Benchmarks
+-->
 <!--#declaration
 #include "world.h"
 
-#ifndef AS_cpoll_cppsp_DO
-static UValue*	pvalue;
-#endif
-static UOrmSession*		psql_query;
-static UOrmStatement*	pstmt_query;
-static World*				pworld_query;
+static World*           pworld_query;
+static UOrmSession*     psql_query;
+static UOrmStatement*   pstmt_query;
 static UVector<World*>* pvworld_query;
 
-static void usp_init_query()
-{
-	U_TRACE(5, "::usp_init_query()")
-
-	pworld_query  = U_NEW(World);
-	pvworld_query = U_NEW(UVector<World*>(500));
-
 #ifndef AS_cpoll_cppsp_DO
-	pvalue = U_NEW(UValue(ARRAY_VALUE));
+static UValue* pvalue;
 #endif
-}
 
 static void usp_fork_query()
 {
-	U_TRACE(5, "::usp_fork_query()")
+   U_TRACE(5, "::usp_fork_query()")
+
+   psql_query = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
+
+   if (psql_query->isReady())
+      {
+      pstmt_query = U_NEW(UOrmStatement(*psql_query, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
+
+      if (pstmt_query == 0) U_ERROR("usp_fork_query(): we cound't connect to db");
 
-	psql_query  = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
+      pworld_query = U_NEW(World);
 
-	if (psql_query->isReady())
-		{
-		pstmt_query = U_NEW(UOrmStatement(*psql_query, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
+      pstmt_query->use( pworld_query->id);
+      pstmt_query->into(pworld_query->randomNumber);
 
-		if (pstmt_query == 0) U_ERROR("usp_fork_query(): we cound't connect to db");
+      pvworld_query = U_NEW(UVector<World*>(500));
 
-		pstmt_query->use( pworld_query->id);
-		pstmt_query->into(pworld_query->randomNumber);
-		}
+#  ifndef AS_cpoll_cppsp_DO
+      pvalue = U_NEW(UValue(ARRAY_VALUE));
+#  endif
+      }
 }
 
 #ifdef DEBUG
 static void usp_end_query()
 {
-	U_TRACE(5, "::usp_end_query()")
+   U_TRACE(5, "::usp_end_query()")
 
-	if (pstmt_query) delete pstmt_query;
+   if (pstmt_query)
+   {
+   delete   pstmt_query;
+   delete    psql_query;
+   delete pvworld_query;
+   delete  pworld_query;
 
-	delete psql_query;
-	delete pvworld_query;
-	delete pworld_query;
 #ifndef AS_cpoll_cppsp_DO
-	delete pvalue;
+   delete pvalue;
 #endif
+   }
 }
 #endif
 -->
@@ -63,7 +67,7 @@ Content-Type: application/json; charset=UTF-8
 <!--#code
 int i = 0, num_queries = queries.strtol();
 
-	  if (num_queries <   1) num_queries = 1;
+     if (num_queries <   1) num_queries = 1;
 else if (num_queries > 500) num_queries = 500;
 
 #ifdef AS_cpoll_cppsp_DO
@@ -71,23 +75,23 @@ USP_PUTS_CHAR('[');
 #endif
 
 while (true)
-	{
-	pworld_query->id = u_get_num_random(10000);
+   {
+   pworld_query->id = u_get_num_random(10000);
 
-	pstmt_query->execute();
+   pstmt_query->execute();
 
 #ifdef AS_cpoll_cppsp_DO
-	USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_query->id, pworld_query->randomNumber);
+   USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_query->id, pworld_query->randomNumber);
 #endif
 
-	pvworld_query->push_back(U_NEW(World(*pworld_query)));
+   pvworld_query->push_back(U_NEW(World(*pworld_query)));
 
-	if (++i == num_queries) break;
+   if (++i == num_queries) break;
 
 #ifdef AS_cpoll_cppsp_DO
-	USP_PUTS_CHAR(',');
+   USP_PUTS_CHAR(',');
 #endif
-	}
+   }
 
 #ifdef AS_cpoll_cppsp_DO
 USP_PUTS_CHAR(']');

+ 59 - 55
frameworks/C++/ULib/src/update.usp

@@ -1,64 +1,70 @@
+<!--#
+Test type 5: Database updates
+TechEmpower Web Framework Benchmarks
+-->
 <!--#declaration
 #include "world.h"
 
-#ifndef AS_cpoll_cppsp_DO
-static UValue*	pvalue;
-#endif
-static UOrmSession*		psql_update;
-static UOrmStatement*	pstmt1;
-static UOrmStatement*	pstmt2;
-static World*				pworld_update;
+static World*           pworld_update;
+static UOrmSession*     psql_update;
+static UOrmStatement*   pstmt1;
+static UOrmStatement*   pstmt2;
 static UVector<World*>* pvworld_update;
 
-static void usp_init_update()
-{
-	U_TRACE(5, "::usp_init_update()")
-
-	pworld_update  = U_NEW(World);
-	pvworld_update = U_NEW(UVector<World*>(500));
-
 #ifndef AS_cpoll_cppsp_DO
-	pvalue = U_NEW(UValue(ARRAY_VALUE));
+static UValue* pvalue;
 #endif
-}
 
 static void usp_fork_update()
 {
-	U_TRACE(5, "::usp_fork_update()")
+   U_TRACE(5, "::usp_fork_update()")
+
+   psql_update = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
 
-	psql_update = U_NEW(UOrmSession(U_CONSTANT_TO_PARAM("hello_world")));
+   if (psql_update->isReady())
+      {
+      pstmt1 = U_NEW(UOrmStatement(*psql_update, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
+      pstmt2 = U_NEW(UOrmStatement(*psql_update, U_CONSTANT_TO_PARAM("UPDATE World SET randomNumber = ? WHERE id = ?")));
 
-	if (psql_update->isReady())
-		{
-		pstmt1 = U_NEW(UOrmStatement(*psql_update, U_CONSTANT_TO_PARAM("SELECT randomNumber FROM World WHERE id = ?")));
-		pstmt2 = U_NEW(UOrmStatement(*psql_update, U_CONSTANT_TO_PARAM("UPDATE World SET randomNumber = ? WHERE id = ?")));
+      if (pstmt1 == 0 ||
+          pstmt2 == 0)
+         {
+         U_ERROR("usp_fork_update(): we cound't connect to db");
+         }
 
-		if (pstmt1 == 0 ||
-			 pstmt2 == 0)
-			{
-			U_ERROR("usp_fork_update(): we cound't connect to db");
-			}
+      pworld_update = U_NEW(World);
 
-		pstmt1->use( pworld_update->id);
-		pstmt1->into(pworld_update->randomNumber);
-		pstmt2->use( pworld_update->randomNumber, pworld_update->id);
-		}
+      pstmt1->use( pworld_update->id);
+      pstmt1->into(pworld_update->randomNumber);
+      pstmt2->use( pworld_update->randomNumber, pworld_update->id);
+
+      pvworld_update = U_NEW(UVector<World*>(500));
+
+#  ifndef AS_cpoll_cppsp_DO
+      pvalue = U_NEW(UValue(ARRAY_VALUE));
+#  endif
+      }
 }
 
 #ifdef DEBUG
 static void usp_end_update()
 {
-	U_TRACE(5, "::usp_end_update()")
-
-	if (pstmt1) delete pstmt1;
-	if (pstmt2) delete pstmt2;
-
-	delete psql_update;
-	delete pvworld_update;
-	delete pworld_update;
-#ifndef AS_cpoll_cppsp_DO
-	delete pvalue;
-#endif
+   U_TRACE(5, "::usp_end_update()")
+
+   if (pstmt1 &&
+       pstmt2)
+      {
+      delete pstmt1;
+      delete pstmt2;
+
+      delete    psql_update;
+      delete pvworld_update;
+      delete  pworld_update;
+
+#  ifndef AS_cpoll_cppsp_DO
+      delete pvalue;
+#  endif
+      }
 }
 #endif
 -->
@@ -71,7 +77,7 @@ Content-Type: application/json; charset=UTF-8
 <!--#code
 int i = 0, num_queries = queries.strtol();
 
-	  if (num_queries <   1) num_queries = 1;
+     if (num_queries <   1) num_queries = 1;
 else if (num_queries > 500) num_queries = 500;
 
 #ifdef AS_cpoll_cppsp_DO
@@ -79,29 +85,27 @@ USP_PUTS_CHAR('[');
 #endif
 
 while (true)
-	{
-	pworld_update->id = u_get_num_random(10000);
-
-	pstmt1->execute();
+   {
+   pworld_update->id = u_get_num_random(10000);
 
-	U_INTERNAL_DUMP("pworld_update->randomNumber = %u", pworld_update->randomNumber)
+   pstmt1->execute();
 
-	pworld_update->randomNumber = u_get_num_random(10000);
+   pworld_update->randomNumber = u_get_num_random(10000);
 
-	pstmt2->execute();
+   pstmt2->execute();
 
 #ifdef AS_cpoll_cppsp_DO
-	USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_update->id, pworld_update->randomNumber);
+   USP_PRINTF("{\"id\":%u,\"randomNumber\":%u}", pworld_update->id, pworld_update->randomNumber);
 #endif
 
-	pvworld_update->push_back(U_NEW(World(*pworld_update)));
+   pvworld_update->push_back(U_NEW(World(*pworld_update)));
 
-	if (++i == num_queries) break;
+   if (++i == num_queries) break;
 
 #ifdef AS_cpoll_cppsp_DO
-	USP_PUTS_CHAR(',');
+   USP_PUTS_CHAR(',');
 #endif
-	}
+   }
 
 #ifdef AS_cpoll_cppsp_DO
 USP_PUTS_CHAR(']');