
  ============================================
  --------- C/C++ Program Perfometer ---------
  --------------- Version-2.3 ----------------
  -------------- Testsuites-1.6 --------------
  ============================================

  The algorithm has been written by Alex Vinokur.
  The perfometer enables 
    to get C/C++ program performance
    for any metrics.
  Programming Language : C++.
  Any and all comments would be appreciated.

  DISCLAIMER

    Copyright (c) 2002-2003 by Alex Vinokur.

    This software is provided 'as-is', without any express 
    or implied warranty.

    This work and all works derived from it may be copied and modified 
    without any restrictions other than that 
    a copy of this copyright notice must be included in any copy 
    of this work or any derived work.

    The Author assume no responsibility for damage or loss of system
    performance as a direct or indirect result of the use of this
    software.



  =====================================
  BRIEF DESCRIPTION

    -----------------------------------
    The program enables to get performance 
    of C/C++ program and separated pieces of code for any metrics 
    (for instance : clocks, uclocks, rusage-metrics, metrics defined by user etc.). 

    The measurement results are represented in detailed/summary reports. 
    The detailed report holds results of individual tests, 
    the summary report holds average cost and its analysis. 
    The comparison results are represented in comparative tables 
    for individual comparison groups. 

    The user may set various parameters 
    in order to control the measurement/comparison process : 
    * measurement report and detailed measurement report flags, 
    * total tests, 
    * total iterations, 
    * measurement scale, 
    * confidence threshold. 



  =====================================
  AVAILABILITY

    -----------------------------------
    ### Web page ###
        http://alexvn.freeservers.com/s1/perfometer.html

    -----------------------------------
    ### Download ###
        ------ Latest version ------
        http://sourceforge.net/projects/cpp-perfometer
        http://alexvn.freeservers.com/s1/perfometer.zip	(via http://alexvn.freeservers.com/s1/perfometer.html)
        ------ Previous versions ------
        http://www.simtel.net/pub/pd/60044.shtml
        http://home.barak-online.net/alexvn/s2/pf/pmeter22.zip
        http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=3512&lngWId=3

        Files:
	  readme.txt	(this file)

            === Program Files ===
		--- User-Independent Source Files ---
		:::::::::::::::::::::::::::::::::::::
		* version.h	Software Version 
		* env.h		Environment Variables 
		* macro.h	Various Macro 
		* common.h	Common Function etc
		* user.h	User-Specialized Function Declaration
		* pfmeter.h	Definition of Common Classes
		* pfmeter2.h	Implementation of Common Template Classes 
		* version.cpp	Software Version 
		* pfmeter.cpp	Implementation of Common (Non-Template) Classes 
		* main.cpp	Main Program 

		--- User-Defined Metrics Source Files --- 
	        --- Contain definition and implementation of specific performance metrics (if any) ---
		:::::::::::::::::::::::::::::::::::::::::
		* adapt.h	Definition of User-Related Metrics Classes 
		* adapt.cpp 	Implementation of User-Related Metrics Classes

		--- User-Defined Test Source Files --- 
		--- Contain declaration and implementation of measured/compared functions ---
		:::::::::::::::::::::::::::::::::::::::
		* tests.h	Declaration of Measured/Compared Functions 
		* tests.cpp	Setting Measured Functions and/or Comparison Groups
		* t_access.cpp	Testsuites : access to element 
		* t_call.cpp	Testsuites : calling functions : templated vs. non-templated
		* t_cont.cpp	Testsuites : container performance (A.Stepanov & B.Stroustrup)
		* t_dcast.cpp	Testsuites : dynamic_cast vs.switch
		* t_endl.cpp	Testsuites : endl vs. "\n/" and '\n'
		* t_file.cpp	Testsuites : reading contents from file into one string
		* t_find.cpp	Testsuites : find method vs. find algorithm
		* t_for.cpp	Testsuites : for-loop vs. for_each
		* t_inher.cpp	Testsuites : multiple inheritance vs. single inheritance
		* t_recurs.cpp	Testsuites : recursion vs. iteration vs. accumulate
		* t_string.cpp	Testsuites : string initialization, string length, string processing (C vs. STL)
		* t_stub.cpp	Testsuites : stub testuites
		* t_demo1.cpp	Demo Testsuites
		* t_demo2.cpp	Demo Testsuites

		--- Makefile ---
		::::::::::::::::
		* Makefile		Makefile 

		--- Batch files ---
		:::::::::::::::::::
		compile.bat	Compilation 
		run_demo.bat	Executable File Invokation (Demo)



  =====================================
  ENVIRONMENT

    ### System & Compiler ###

        Windows 2000 Professional
        CYGWIN_NT-5.0 1.3.22(0.78/3/2)
        GNU gcc/g++ version 3.2 20020927 (prerelease)
	GNU Make version 3.79.1



  =====================================
  USAGE

    ### Compilation & Run ###

        --- Compilation ---
        $ compile.bat

        --- Run Demo via batch file ---
        $ run_demo.bat

        --- Getting Help ---
        $ <perfometer-exe-file-name> -h


  =====================================
  NOTE about uclock() and clock() on Windows 2000

    Tests should use not uclock()
      because there is a problem with time measurement on Windows2000.
    Details : http://groups.google.com/groups?th=f073ad9b3aca2a6a
    However, clock() has insufficient time accuracy.
    It seems that there is no problem with using uclock() on Windows 95/98.	


  =====================================
  APPLICATION

    #####################################
    ##### Performance measurements ######
    ####### performed with using ########
    ###  the C/C++ Program Perfometer ###
    #####################################


    Raw Logs : 
    ----------
    http://groups.google.com/groups?th=fb0e11d9e7107414


    Also :
    ------
    1. for-loop vs. for_each algorithm in vector, string, list, set. 
       http://groups.google.com/groups?selm=3C8DD296.A7304148%40bigfoot.com 

    2. find() algorithm vs. find() method in vector, list, set, map 
       http://groups.google.com/groups?selm=3C8C7B97.E4B5CA9C%40bigfoot.com 

    3. Access to array, vector, basic_string 
       http://groups.google.com/groups?selm=3C8C619E.D3F557D5%40bigfoot.com 

    4. switch vs. dynamic_cast 
       http://groups.google.com/groups?selm=15eacd17.0204300451.209a527f%40posting.google.com 

    5. operator[] vs. at() 
       http://groups.google.com/groups?selm=aa8kpg%248oo15%241%40ID-79865.news.dfncis.de


=========================================================

	Alex Vinokur
		2003.08.07
	-----------------------------------
	mailto:alexvn@connect.to
	mailto:alexv@hitechclub.com
        http://up.to/alexvn
	-----------------------------------

=========================================================

