Beispiel #1
0
        /// <summary>
        ///   Calculates the throughput by the length of the file and the average duration to parse it.
        /// </summary>
        /// <param name="lngFileLength">The length of the file in bytes.</param>
        /// <param name="dblAvgDuration">The average duration to parse the file.</param>
        /// <returns>The string represntation of the throughput.</returns>
        private static string _CalculateThroughput(long lngFileLength, double dblAvgDuration)
        {
            string strUnits;
            double dblUnscaledThroughput, dblScaledThroughput;

            // Multiply the length by 1000 change the units to seconds.
            dblUnscaledThroughput = (((double)lngFileLength) * 1000d) / dblAvgDuration;

            // Perform the scaling of the filelength.
            PerformanceTests._ScaleValue(dblUnscaledThroughput, out dblScaledThroughput, out strUnits);

            return(string.Format("{0,9:#0.000} {1}/s", dblScaledThroughput, strUnits));
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            long   lngFileLength;
            double dblScaledValue;
            string strRowsOfData, strUnits;

            Console.Write(string.Format("Number of iterations of data [1 iteration = {0} rows]: ", PerformanceTests.NUMBER_OF_ROWS_IN_DATA));
            strRowsOfData = Console.ReadLine();

            if ((strRowsOfData.Length < 1) || !int.TryParse(strRowsOfData, out PerformanceTests.RowsOfData) || (PerformanceTests.RowsOfData < 1))
            {
                Console.WriteLine();
                Console.WriteLine("Please supply a valid number.");
                Console.WriteLine();
                Console.WriteLine("<- Press Enter to Proceed ->");
                Console.ReadLine();
                return;
            }

            /////////////////////////
            // Performance Testing //
            /////////////////////////

            // Make sure the user wants to perform it, since it will be a
            // long running process.
            Console.Write(Environment.NewLine);
            Console.WriteLine("The following will generate performance information about the");
            Console.WriteLine("GenericParser class.");
            Console.Write(Environment.NewLine);

            Console.WriteLine("Executions for each test: {0}", PerformanceTests.ITERATIONS_OF_TESTS);
            Console.WriteLine("Rows of CSV Data:         {0}", PerformanceTests.RowsOfData * PerformanceTests.NUMBER_OF_ROWS_IN_DATA);
            Console.WriteLine("Rows of FixedWidth Data:  {0}", PerformanceTests.RowsOfData * PerformanceTests.NUMBER_OF_ROWS_IN_DATA);
            Console.Write(Environment.NewLine);

            Console.WriteLine("<- Press Enter to Proceed ->");
            Console.ReadLine();

            ///////////////////////////////////////////
            // Start executing the performance tests //
            ///////////////////////////////////////////

            PerformanceTests._GenerateSchemaFile();
            PerformanceTests._GenerateCsvData();

            lngFileLength = new FileInfo(CSV_DATA_FILE).Length;

            PerformanceTests._ScaleValue((double)lngFileLength, out dblScaledValue, out strUnits);
            Console.WriteLine("Size of Csv data file: {0,5:#0.00} {1}", dblScaledValue, strUnits);
            Console.WriteLine();

            PerformanceTests._TestRunner(new Action(PerformanceTests._TextDriverCsv), FieldType.Delimited, lngFileLength, "MS Text Driver");
            PerformanceTests._TestRunner(new Action(PerformanceTests._TextFieldParserCsv), FieldType.Delimited, lngFileLength, "MS Text Field Parser");
            PerformanceTests._TestRunner(new Action(PerformanceTests._CsvReader), FieldType.Delimited, lngFileLength, "CsvReader 3.7");
            PerformanceTests._TestRunner(new Action(PerformanceTests._GenericParser10Csv), FieldType.Delimited, lngFileLength, "GenericParser 1.0");
            PerformanceTests._TestRunner(new Action(PerformanceTests._GenericParser11Csv), FieldType.Delimited, lngFileLength, "GenericParser 1.1");

            Console.Write(Environment.NewLine);
            Console.WriteLine("============================================");
            Console.Write(Environment.NewLine);

            PerformanceTests._GenerateFixedWidthData();

            lngFileLength = new FileInfo(PerformanceTests.FW_DATA_FILE).Length;

            PerformanceTests._ScaleValue((double)lngFileLength, out dblScaledValue, out strUnits);
            Console.WriteLine("Size of FixedWidth data file: {0,5:#0.00} {1}", dblScaledValue, strUnits);
            Console.WriteLine();

            PerformanceTests._TestRunner(new Action(PerformanceTests._TextDriverFixedWidth), FieldType.FixedWidth, lngFileLength, "MS Text Driver");
            PerformanceTests._TestRunner(new Action(PerformanceTests._TextFieldParserFixedWidth), FieldType.FixedWidth, lngFileLength, "MS Text Field Parser");
            PerformanceTests._TestRunner(new Action(PerformanceTests._GenericParser10FixedWidth), FieldType.FixedWidth, lngFileLength, "GenericParser 1.0");
            PerformanceTests._TestRunner(new Action(PerformanceTests._GenericParser11FixedWidth), FieldType.FixedWidth, lngFileLength, "GenericParser 1.1");

            Console.Write(Environment.NewLine);
            Console.WriteLine("Completed Performance testing.");
            Console.Write(Environment.NewLine);
            Console.WriteLine("<- Press Enter to Exit ->");
            Console.ReadLine();

            // Cleanup the files we created.
            File.Delete(PerformanceTests.CSV_DATA_FILE);
            File.Delete(PerformanceTests.FW_DATA_FILE);
            File.Delete(PerformanceTests.SCHEMA_FILE);
        }