Exemplo n.º 1
0
        public static double CalculateEvaluatedNodesPerSec(ISymbolicExpressionTree[] trees, ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, Dataset dataset, int repetitions)
        {
            // warm up
            IEnumerable <int> rows = Enumerable.Range(0, dataset.Rows).ToList();
            long   nNodes          = 0;
            double c = 0;

            for (int i = 0; i < trees.Length; i++)
            {
                nNodes += trees[i].Length * (dataset.Rows - 1);
                c       = interpreter.GetSymbolicExpressionTreeValues(trees[i], dataset, rows).Count(); // count needs to evaluate all rows
            }

            Stopwatch watch = new Stopwatch();

            for (int rep = 0; rep < repetitions; rep++)
            {
                watch.Start();
                c = 0;
                for (int i = 0; i < trees.Length; i++)
                {
                    interpreter.GetSymbolicExpressionTreeValues(trees[i], dataset, rows).Count(); // count needs to evaluate all rows
                }
                watch.Stop();
            }
            Console.WriteLine("Random tree evaluation performance of " + interpreter.GetType() + ": " +
                              watch.ElapsedMilliseconds + "ms " +
                              Util.NodesPerSecond(nNodes * repetitions, watch) + " nodes/sec");
            return(Util.NodesPerSecond(nNodes * repetitions, watch));
        }
Exemplo n.º 2
0
    public static double CalculateEvaluatedNodesPerSec(ISymbolicExpressionTree[] trees, ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, Dataset dataset, int repetitions) {
      // warm up
      IEnumerable<int> rows = Enumerable.Range(0, dataset.Rows).ToList();
      long nNodes = 0;
      double c = 0;
      for (int i = 0; i < trees.Length; i++) {
        nNodes += trees[i].Length * (dataset.Rows - 1);
        c = interpreter.GetSymbolicExpressionTreeValues(trees[i], dataset, rows).Count(); // count needs to evaluate all rows
      }

      Stopwatch watch = new Stopwatch();
      for (int rep = 0; rep < repetitions; rep++) {
        watch.Start();
        c = 0;
        for (int i = 0; i < trees.Length; i++) {
          interpreter.GetSymbolicExpressionTreeValues(trees[i], dataset, rows).Count(); // count needs to evaluate all rows
        }
        watch.Stop();
      }
      Console.WriteLine("Random tree evaluation performance of " + interpreter.GetType() + ": " +
        watch.ElapsedMilliseconds + "ms " +
        Util.NodesPerSecond(nNodes * repetitions, watch) + " nodes/sec");
      return Util.NodesPerSecond(nNodes * repetitions, watch);
    }