perfDataFunctionsTest.cxx
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:6k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /* ====================================================================
  2.  * The Vovida Software License, Version 1.0 
  3.  * 
  4.  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
  5.  * 
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 
  10.  * 1. Redistributions of source code must retain the above copyright
  11.  *    notice, this list of conditions and the following disclaimer.
  12.  * 
  13.  * 2. Redistributions in binary form must reproduce the above copyright
  14.  *    notice, this list of conditions and the following disclaimer in
  15.  *    the documentation and/or other materials provided with the
  16.  *    distribution.
  17.  * 
  18.  * 3. The names "VOCAL", "Vovida Open Communication Application Library",
  19.  *    and "Vovida Open Communication Application Library (VOCAL)" must
  20.  *    not be used to endorse or promote products derived from this
  21.  *    software without prior written permission. For written
  22.  *    permission, please contact vocal@vovida.org.
  23.  *
  24.  * 4. Products derived from this software may not be called "VOCAL", nor
  25.  *    may "VOCAL" appear in their name, without prior written
  26.  *    permission of Vovida Networks, Inc.
  27.  * 
  28.  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
  29.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  30.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
  31.  * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
  32.  * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
  33.  * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
  34.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  35.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  36.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  37.  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  38.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  39.  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  40.  * DAMAGE.
  41.  * 
  42.  * ====================================================================
  43.  * 
  44.  * This software consists of voluntary contributions made by Vovida
  45.  * Networks, Inc. and many individuals on behalf of Vovida Networks,
  46.  * Inc.  For more information on Vovida Networks, Inc., please see
  47.  * <http://www.vovida.org/>.
  48.  *
  49.  */
  50. static const char* const DataTest_cxx_Version =
  51.     "$Id: perfDataFunctionsTest.cxx,v 1.3 2001/06/20 21:27:13 bko Exp $";
  52. #include "Data.hxx"
  53. #include "CWBuffer.hxx"
  54. #include "DurationStatistic.hxx"
  55. #include "PerformanceDb.hxx"
  56.    
  57. using Vocal::Statistics::DurationStatistic;
  58. using Vocal::Statistics::StatisticsDb;
  59.     
  60. #define NONE 0
  61. #define MATCH 1
  62. #define MATCHREPLACE 11
  63. #define EQUALOPERATOR 2
  64. #define REMOVESPACES 3
  65. #define LENGTH 4
  66. #define EMPTYCONSTRUCTOR 5
  67. #define TRUNCATE 6
  68. #define NOTEQUAL 7
  69. #define REPLACE 8
  70. #define REMOVELWS 9
  71. #define EXPAND 10       
  72. //testing functions of Data, which gets called very frequently.
  73. //initially, considering all functions, called by SipVia, decoding.
  74.     
  75. int main( int argc, char* argv[] )
  76. {
  77.     if ( argc < 2 )
  78.     {
  79.         cerr << "Usage: "
  80.         << argv[0]
  81. << " <#timesToRunTest>"
  82. << " <FunctionToTest: Enter 1 - match, 2 - operator =, 3 - removeSpaces, 4 - length, 5 - empty Constructor, 6 - Truncate , 7 - operator !=> 8 - Replace , 9 - RemoveLWS, 10 - Expand , 11- MatchReplace" << endl;
  83.         exit( -1 );
  84.     }
  85.     
  86.     int numTimes = 1;
  87.     
  88.     int functionSelect = NONE;
  89.     
  90.     Data line(" SIP/2.0/UDP 172.19.175.150:5060;branch=78377a23f9fb8014efae61c726ec6e77.1 ");
  91.     
  92.     StatisticsDb db;
  93.     
  94.     DurationStatistic stat(db, Data("perfDataFunctionsTest"));
  95.     
  96.     float sum = 0;
  97.     
  98.     if (argc >= 2)
  99.     {
  100. numTimes = atoi(argv[1]);
  101.     }
  102.     
  103.     if (argc >= 3)
  104.     {
  105.         functionSelect = atoi(argv[2]); 
  106.     }
  107.     
  108.     stat.start();
  109.     for (int i = 0; i < numTimes; i++)
  110.     {
  111. switch(functionSelect)
  112. {
  113.     case MATCH:
  114.     {
  115. Data viadata;
  116.         line.match("/", &viadata, true);
  117. //cout << "line after replace is: " << line.getData() << endl;
  118.     }
  119.     break;
  120.             case MATCHREPLACE:
  121.             {
  122.                 Data viadata;
  123.                 Data repl("ABCD");
  124.                 line.match("/", &viadata, true, repl);
  125.                 //        cout << "line after replace is: " << line.getData() << endl;
  126.             }      
  127.             break;
  128.             case REMOVELWS:
  129.             {
  130.                 line.removeLWS();
  131.                 //        cout << "line after replace is: " << line.getData() << endl;
  132.             }     
  133.     case EQUALOPERATOR:
  134.     {
  135. Data line2;
  136.     
  137.         line2 = line;
  138.     }
  139.     break;
  140.     case REMOVESPACES:
  141.     {
  142.         line.removeSpaces();
  143.     }
  144.     break;
  145.     case LENGTH:
  146.     {
  147.         line.length();
  148.     }
  149.     break;
  150.     case EMPTYCONSTRUCTOR:
  151.     {
  152.         Data emptyConstructor;
  153.     }
  154.     break;
  155.     case TRUNCATE:
  156.     {
  157. CWBuffer buff("abcdefgh", 8);
  158. buff.truncate(4, 0);
  159.     }
  160.     break;
  161.     case NOTEQUAL:
  162.     {
  163. Data line2("defghi");
  164. line != line2;
  165.     }
  166.     break;
  167.             case REPLACE:
  168.             {
  169.                 Data repLine("ABCDE");
  170. //                line.replace(3, 4, repLine);
  171.                 //cout << "after replace: " << line.getData() << endl;
  172.             }
  173.            break;  
  174.            case EXPAND:
  175.             {
  176. #if 0
  177.                 Data via2("SIP/2.0/UDP 172.19.175.150:5060;branch=78377a23f9fb8014efae61c726ec6e77.1");
  178.                 line+= ",";
  179.                 line+= via2;
  180.                 line.expand(Data line, Data(",") , Data("rn"), Data("rn"));
  181. #endif
  182.             }
  183.             break;
  184. }
  185.     }
  186.     stat.stop();
  187.     stat.record();
  188.     sum+= stat.average();
  189.     
  190.     cout << "average ticks : " << sum/numTimes << endl;
  191.     
  192.     return 0;
  193. }