[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    [optimization] QStringTemp for Qt 4
From:       "Fred P." <fprog26 () hotmail ! com>
Date:       2005-03-26 2:41:37
Message-ID: BAY104-F28427E6356283A2D31318FA7420 () phx ! gbl
[Download RAW message or body]

Hi everyone,

Those remembering this proposal and it's issue due to Binary 
incompatibility.

http://kde-apps.org/content/show.php?content=12191

Well, I tried the same with Qt 4:

http://distfiles.gentoo.org/distfiles/qt-x11-opensource-4.0.0-b2-snapshot-20050302.tar.bz2


After compiling it on RedHat Linux, like this:

# g++  -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_GUI_LIB 
-DQT_NO_CAST_TO_ASCII -DQT3_SUPPORT_WARNINGS -DQT_MOC_COMPAT 
-DQT_RASTER_IMAGEENGINE -DQT_HAVE_FREETYPE -DQT_NO_DEBUG -DQT_CORE_LIB 
-D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE 
-I/root/q/qt-x11-opensource-4.0.0-b2-snapshot-20050302/mkspecs/linux-g++ -I. 
-I/root/q/qt-x11-opensource-4.0.0-b2-snapshot-20050302/include 
-L/root/q/qt-x11-opensource-4.0.0-b2-snapshot-20050302/lib -I../global 
-I../codecs -I../thread -I../kernel -I../io  -I 
/root/q/qt-x11-opensource-4.0.0-b2-snapshot-20050302/include/Qt -I 
/root/q/qt-x11-opensource-4.0.0-b2-snapshot-20050302/include/QtCore/ 
-lQtCore qstringtemp_test.cpp -o qstringtemp.x

# ./qstringtemp.x

The algorithm should be tweaked using benchmarks.

On average it is from 10% to 2x to 10x faster, depending on buffer size 
usage.

Here's the two file needed:

#ifndef __QStringTemp_H__
#define __QStringTemp_H__

#include "qstring.h"

inline uint QStringTempSize( register uint newLen )
{
  register uint newMax = 4;
  while ( newMax < newLen )
  {
    newMax *= 2;
  }

  register uint sz = ( newMax + newLen ) / 2;
  #define QStringTempShift 0
  newMax = ( ((sz) + (sz) >> (QStringTempShift)) | 16 );
  return newMax;
}

class Q_CORE_EXPORT QStringTemp : public QString
{
public:
  inline QStringTemp( register size_t sz = 0)
//  : QString( (int)( QStringTempSize( sz ) ), (QChar)('\0') )
    : QString()
  {
    QString::reserve( (int)( QStringTempSize(sz) ) );
  }

  inline ~QStringTemp()
  {
  }

public:
  Q_CORE_EXPORT inline QStringTemp& operator+( const QString &s2 )
  {
    QString::operator+=( s2 );
    return *this;
  }

  Q_CORE_EXPORT inline QStringTemp& operator+( const char *s2 )
  {
    QString::operator+=( QString::fromLatin1(s2) );
    return *this;
  }

  Q_CORE_EXPORT inline QStringTemp& operator+( QChar c2 )
  {
    QString::operator+=( c2 );
    return *this;
  }

  Q_CORE_EXPORT inline QStringTemp& operator+( char c2 )
  {
    QString::operator+=( c2 );
    return *this;
  }
};

#endif

#ifndef __QStringTemp_Test_CPP__
#define __QStringTemp_Test_CPP__

#include <stdio.h>
#include "qstring.h"
#include "qstringtemp.h"

#ifndef _WIN32
#define _tzset()
#define _strtime( arg )
#endif

// This text is used for testing purposes, it could be anything...

#define SOMETEXT \
"************************************************************************************* \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
******************************************************************************************************************************
                
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************** \
************************************************************************************************************************************************************"


#include <time.h>

QString test1();
QString test2();
QString test3();
QString test4();
QString test5();
QString test6();
QString test7();
QString test8();
QString test9();
QString test10();

QString test1b();
QString test2b();
QString test3b();
QString test4b();
QString test5b();
QString test6b();
QString test7b();
QString test8b();
QString test9b();
QString test10b();

#define MAX  60000
#define MAX2 30000
#define MAX3 16000
#define MAX4 12000
#define MAX5  8000

int main( int argc, char* argv[] )
{
  register int i;
  char tstart[ 128];
  char tfinish[128];
  clock_t start, finish, diff1, diff2;
  double  duration;

  memset( tstart,  0, 128 );
  memset( tfinish, 0, 128 );

  /* Set time zone from TZ environment variable. If TZ is not set,
   * the operating system is queried to obtain the default value
   * for the variable.
   */
   _tzset();

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n1. With QStringTemp: %d - %d bytes", MAX, 21  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX; i++ )
   test1();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n2. Without QStringTemp: %d - %d bytes", MAX, 21  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX; i++ )
   test2();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n3. With QStringTemp : %d", MAX2  );
   printf( " - %d bytes", 1572*4  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX2; i++ )
   test3();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n4. Without QStringTemp : %d", MAX2  );
   printf( " - %d bytes", 1572*4  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX2; i++ )
   test4();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n5. With QStringTemp : %d", MAX3  );
   printf( " - %d bytes", 1572*6  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX3; i++ )
   test5();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n6. Without QStringTemp : %d", MAX3  );
   printf( " - %d bytes", 1572*6  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX3; i++ )
   test6();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////


   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n7. With QStringTemp : %d", MAX4  );
   printf( " - %d bytes", 1572*8  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX4; i++ )
   test7();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n8. Without QStringTemp : %d", MAX4  );
   printf( " - %d bytes", 1572*8  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX4; i++ )
   test8();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////


   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n9. With QStringTemp : %d", MAX5  );
   printf( " - %d bytes", 1572*16  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX5; i++ )
   test9();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n10. Without QStringTemp : %d", MAX5  );
   printf( " - %d bytes", 1572*16  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX5; i++ )
   test10();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////

   printf( "\nWITHOUT KNOWING QStringTemp buffer size in advance\n" );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n3. With QStringTemp : %d", MAX2  );
   printf( " - %d bytes", 1572*4  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX2; i++ )
   test3b();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n4. Without QStringTemp : %d", MAX2  );
   printf( " - %d bytes", 1572*4  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX2; i++ )
   test4b();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n5. With QStringTemp : %d", MAX3  );
   printf( " - %d bytes", 1572*6  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX3; i++ )
   test5b();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n6. Without QStringTemp : %d", MAX3  );
   printf( " - %d bytes", 1572*6  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX3; i++ )
   test6b();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////


   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n7. With QStringTemp : %d", MAX4  );
   printf( " - %d bytes", 1572*8  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX4; i++ )
   test7b();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n8. Without QStringTemp : %d", MAX4  );
   printf( " - %d bytes", 1572*8  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX4; i++ )
   test8b();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////


   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n9. With QStringTemp : %d", MAX5  );
   printf( " - %d bytes", 1572*16  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX5; i++ )
   test9b();

   finish = clock();
   _strtime( tfinish );
   diff1 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d \n", duration, start, finish,
(finish - start) );

   /////////////////////////////////////////////////////

   /* Display operating system-style date and time. */
   _strtime( tstart );
   printf( "\n10. Without QStringTemp : %d", MAX5  );
   printf( " - %d bytes", 1572*16  );
   printf( "\t  OS time:\t%s", tstart );

   start = clock();

   for( i = 0; i < MAX5; i++ )
   test10b();

   finish = clock();
   _strtime( tfinish );
   diff2 = (finish - start);
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "\t%s\n", tfinish );
   printf( "%2.6f seconds: %d -> %d = %d :", duration, start, finish,
(finish - start) );

   if ( diff1 < diff2 )
   {
     printf( "PASSED. %d\n", (diff1 - diff2) );
   }
   else
   {
     printf( "FAILED. %d\n", (diff1 - diff2) );
   }

   /////////////////////////////////////////////////////

  printf( "\n" );
  return 0;
}

QString test1()
{
  //printf( "With QStringTemp\n" );
  // 22 bytes
  QString a = "Alpha";
  QString b = "Beta";
  QString c = "Calling";
  QString d = "Delta";

  QStringTemp tmp;
  QString s = tmp + a + b + c + d;

  //printf( "%c", s.data()[0] );

  return s;
}

QString test2()
{
  //printf( "No QStringTemp\n" );

  QString a = "Alpha";
  QString b = "Beta";
  QString c = "Calling";
  QString d = "Delta";

  QString s = a + b + c + d;

  return s;
  //printf( "%c", s.data()[0] );
}

QString test3()
{
  //printf( "With QStringTemp\n" );

  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;

  QStringTemp tmp(6300);
  QString s = tmp + a + b + c + d;
  return s;
}

QString test4()
{
  //printf( "No QStringTemp\n" );
  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;

  QString s = a + b + c + d;
  return s;
}


QString test5()
{
  //printf( "With QStringTemp\n" );

  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;

  QStringTemp tmp(1572*6); // 9.4K
  QString s = tmp + a + b + c + d + e + f;
  return s;
}

QString test6()
{
  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;

  QString s = a + b + c + d + e + f;
  return s;
}

QString test7()
{
  //printf( "With QStringTemp\n" );

  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;
  QString g = "G" SOMETEXT ;
  QString h = "H" SOMETEXT ;

  QStringTemp tmp(1572*8); // 12K
  QString s = tmp + a + b + c + d + e + f + g + h;
  return s;
}

QString test8()
{
  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;
  QString g = "G" SOMETEXT ;
  QString h = "H" SOMETEXT ;

  QString s = a + b + c + d + e + f + g + h;
  return s;
}

QString test9()
{
  //printf( "With QStringTemp\n" );

  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;
  QString g = "G" SOMETEXT ;
  QString h = "H" SOMETEXT ;

  QStringTemp tmp(1572*16); // 25K
  QString s = tmp + a + b + c + d + e + f + g + h + a + b + c + d + e + f +
g + h;
  return s;
}

QString test10()
{
  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;
  QString g = "G" SOMETEXT ;
  QString h = "H" SOMETEXT ;

  QString s = a + b + c + d + e + f + g + h + a + b + c + d + e + f + g +
h;
  return s;
}

QString test3b()
{
  //printf( "With QStringTemp\n" );

  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;

  QStringTemp tmp; //(6300);
  QString s = tmp + a + b + c + d;
  return s;
}

QString test4b()
{
  //printf( "No QStringTemp\n" );
  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;

  QString s = a + b + c + d;
  return s;
}


QString test5b()
{
  //printf( "With QStringTemp\n" );

  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;

  QStringTemp tmp; //(1572*6); // 9.4K
  QString s = tmp + a + b + c + d + e + f;
  return s;
}

QString test6b()
{
  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;

  QString s = a + b + c + d + e + f;
  return s;
}

QString test7b()
{
  //printf( "With QStringTemp\n" );

  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;
  QString g = "G" SOMETEXT ;
  QString h = "H" SOMETEXT ;

  QStringTemp tmp; //(1572*8); // 12K
  QString s = tmp + a + b + c + d + e + f + g + h;
  return s;
}

QString test8b()
{
  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;
  QString g = "G" SOMETEXT ;
  QString h = "H" SOMETEXT ;

  QString s = a + b + c + d + e + f + g + h;
  return s;
}

QString test9b()
{
  //printf( "With QStringTemp\n" );

  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;
  QString g = "G" SOMETEXT ;
  QString h = "H" SOMETEXT ;

  QStringTemp tmp; //(1572*16); // 25K
  QString s = tmp + a + b + c + d + e + f + g + h + a + b + c + d + e + f + 
g + h;
  return s;
}

QString test10b()
{
  // 1572..
  QString a = "A" SOMETEXT ;
  QString b = "B" SOMETEXT ;
  QString c = "C" SOMETEXT ;
  QString d = "D" SOMETEXT ;
  QString e = "E" SOMETEXT ;
  QString f = "F" SOMETEXT ;
  QString g = "G" SOMETEXT ;
  QString h = "H" SOMETEXT ;

  QString s = a + b + c + d + e + f + g + h + a + b + c + d + e + f + g + h;
  return s;
}

#endif


 
> > Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic