Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/02/17 20:42:40 (7 years ago)
Author:
pkimmesw
Message:

#2665 Made ErcOptions checkable

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/FeatureTests/Program.cs

    r14897 r14905  
    5050      //FlagsTest();
    5151      //TestExpressionDependencies();
     52      //TestSplitLogic();
    5253
    5354      Console.WriteLine("\nPress any key to continue...");
    5455      Console.ReadKey(false);
     56    }
     57
     58    private static void TestSplitLogic() {
     59      var sw = new Stopwatch();
     60      var iMax = 100000000u;
     61      var repeats = 10;
     62      var or = new BooleanOrExpression();
     63      var and = new BooleanAndExpression();
     64      var ors = new Expression[iMax];
     65      var ands = new Expression[iMax];
     66      var booleans = new bool[iMax];
     67
     68      for (var i = 0u; i < iMax; i++) {
     69        ors[i] = or;
     70        ands[i] = and;
     71        booleans[i] = i % 2 == 0;
     72      }
     73
     74      var orsProgram = new PushProgram(ors);
     75      var andsProgram = new PushProgram(ands);
     76
     77      using (var interpreter = new PushInterpreter()) {
     78        for (var i = 0u; i < repeats; i++) {
     79          interpreter.BooleanStack.Push(booleans);
     80
     81          sw.Start();
     82          interpreter.Run(orsProgram);
     83          sw.Stop();
     84          interpreter.Reset();
     85        }
     86
     87        Console.WriteLine("ors:\t" + sw.ElapsedTicks / repeats + " - " + sw.ElapsedMilliseconds);
     88
     89        sw.Reset();
     90        interpreter.Reset();
     91
     92        for (var i = 0u; i < repeats; i++) {
     93          interpreter.BooleanStack.Push(booleans);
     94
     95          sw.Start();
     96          interpreter.Run(andsProgram);
     97          sw.Stop();
     98          interpreter.Reset();
     99        }
     100
     101        Console.WriteLine("ands:\t" + sw.ElapsedTicks / repeats + " - " + sw.ElapsedMilliseconds);
     102
     103        sw.Reset();
     104        interpreter.Reset();
     105
     106        for (var i = 0u; i < repeats; i++) {
     107          interpreter.BooleanStack.Push(booleans);
     108
     109          sw.Start();
     110          interpreter.Run(orsProgram);
     111          sw.Stop();
     112          interpreter.Reset();
     113        }
     114
     115        Console.WriteLine("ors:\t" + sw.ElapsedTicks / repeats + " - " + sw.ElapsedMilliseconds);
     116
     117        sw.Reset();
     118        interpreter.Reset();
     119
     120        for (var i = 0u; i < repeats; i++) {
     121          interpreter.BooleanStack.Push(booleans);
     122
     123          sw.Start();
     124          interpreter.Run(andsProgram);
     125          sw.Stop();
     126          interpreter.Reset();
     127        }
     128
     129        Console.WriteLine("ands:\t" + sw.ElapsedTicks / repeats + " - " + sw.ElapsedMilliseconds);
     130      }
    55131    }
    56132
     
    397473      };
    398474
    399       config.DisableStack(StackTypes.Exec, true);
    400       config.DisableStack(StackTypes.Code, true);
    401       config.DisableStack(StackTypes.Float, true);
    402 
    403       config.DisableExpression<ExecYExpression>();
     475      config.DisableStack(StackTypes.Exec);
     476      config.DisableStack(StackTypes.Code);
     477      config.DisableStack(StackTypes.Float);
     478
     479      var errors = config.EnabledExpressions.Where(
     480        name => {
     481          var type = ExpressionTable.NameToTypeTable[name];
     482          var attribute = ExpressionTable.TypeToAttributeTable[type];
     483
     484          return attribute.StackType == StackTypes.Exec
     485              || attribute.AdditionalStackDependencies.HasFlag(StackTypes.Exec)
     486              || attribute.StackType == StackTypes.Code
     487              || attribute.AdditionalStackDependencies.HasFlag(StackTypes.Code)
     488              || attribute.StackType == StackTypes.Float
     489              || attribute.AdditionalStackDependencies.HasFlag(StackTypes.Float);
     490        });
    404491
    405492      var pool = new PushInterpreterPool(config);
Note: See TracChangeset for help on using the changeset viewer.