Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/11/17 20:07:13 (7 years ago)
Author:
pkimmesw
Message:

#2665 PooledPushProgram reduces memory usage and increases performance

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/ProblemTests.cs

    r14744 r14746  
    147147      var instance = new BenchmarkSuiteInstanceProvider();
    148148      var data = instance.LoadData(descriptor);
     149      var provider = new ManagedPoolProvider<PushProgram>(1024);
     150      provider.InitDummyPartition(() => new PushProgram());
    149151
    150152      Parallel.For(0, iterations, i => {
    151153        var execCounter = 0;
    152         var program = CodeGenerator.RandomExpandExpression(maxProgramSizeLimit, random);
     154
     155        var pushProgramPool = provider.CreatePool();
     156        var program = CodeGenerator.RandomProgram(pushProgramPool, maxProgramSizeLimit, random);
     157
    153158        var results = new double[data.OriginalTrainingCount];
    154159
    155160        using (var interpreter = pool.GetInstance(random)) {
     161          interpreter.PushProgramPool = pushProgramPool;
     162
    156163          for (var j = 0; j < data.OriginalTrainingCount; j++) {
    157164            var example = data.Examples[i];
     
    162169
    163170            interpreter.Run(program);
    164 
    165             var diff = GetDiff(example.OutputInt, interpreter.IntegerStack) +
    166                        GetDiff(example.OutputFloat, interpreter.FloatStack) +
    167                        GetDiff(example.OutputBoolean, interpreter.BooleanStack);
     171            pushProgramPool.Dispose();
     172
     173            var diff = GetDiff(example.OutputInt, interpreter.IntegerStack)
     174                       + GetDiff(example.OutputFloat, interpreter.FloatStack)
     175                       + GetDiff(example.OutputBoolean, interpreter.BooleanStack);
    168176
    169177            results[j] = diff;
     
    171179            execCounter += interpreter.ExecCounter;
    172180            interpreter.Clear();
     181            pushProgramPool = provider.CreatePool();
    173182          }
    174183        }
Note: See TracChangeset for help on using the changeset viewer.