Package com.badlogic.ashley.benchmark.ashley

Source Code of com.badlogic.ashley.benchmark.ashley.AshleyBenchmark

package com.badlogic.ashley.benchmark.ashley;

import org.junit.BeforeClass;
import org.junit.Test;

import com.badlogic.ashley.benchmark.Constants;
import com.badlogic.ashley.benchmark.Constants.ComponentType;
import com.badlogic.ashley.benchmark.ashley.components.MovementComponent;
import com.badlogic.ashley.benchmark.ashley.components.PositionComponent;
import com.badlogic.ashley.benchmark.ashley.components.RadiusComponent;
import com.badlogic.ashley.benchmark.ashley.components.StateComponent;
import com.badlogic.ashley.benchmark.ashley.systems.CollisionSystem;
import com.badlogic.ashley.benchmark.ashley.systems.MovementSystem;
import com.badlogic.ashley.benchmark.ashley.systems.RemovalSystem;
import com.badlogic.ashley.benchmark.ashley.systems.StateSystem;
import com.badlogic.ashley.core.Engine;
import com.badlogic.ashley.core.Entity;
import com.badlogic.gdx.math.MathUtils;
import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
import com.carrotsearch.junitbenchmarks.BenchmarkOptions;

public class AshleyBenchmark extends AbstractBenchmark {
  private static Engine engineSmall;
  private static Engine engineMedium;
  private static Engine engineBig;
 
  @BeforeClass
    public static void prepare()
    {
    engineSmall = prepareEngine(Constants.ENTITIES_SMALL_TEST);
    engineMedium = prepareEngine(Constants.ENTITIES_MEDIUM_TEST);
    engineBig = prepareEngine(Constants.ENTITIES_BIG_TEST);
    }
 
  @BenchmarkOptions(benchmarkRounds = Constants.BENCHMARK_ROUNDS, warmupRounds = Constants.WARMUP_ROUNDS)
  @Test
  public void ashleySmallTest() {
    runEngineTest(engineSmall);
  }
 
  @BenchmarkOptions(benchmarkRounds = Constants.BENCHMARK_ROUNDS, warmupRounds = Constants.WARMUP_ROUNDS)
  @Test
  public void ashleyMediumTest() {
    runEngineTest(engineMedium);
  }
 
  @BenchmarkOptions(benchmarkRounds = Constants.BENCHMARK_ROUNDS, warmupRounds = Constants.WARMUP_ROUNDS)
  @Test
  public void ashleyBigTest() {
    runEngineTest(engineBig);
  }
 
  private void runEngineTest(Engine engine) {
    for (int i = 0; i < Constants.FRAMES; ++i) {
      engine.update(Constants.DELTA_TIME);
    }
  }
 
  private static Engine prepareEngine(int numEntities) {
    Engine engine = new Engine();
   
    engine.addSystem(new MovementSystem());
    engine.addSystem(new StateSystem());
    engine.addSystem(new CollisionSystem());
    engine.addSystem(new RemovalSystem());
   
    for (int i = 0; i < numEntities; ++i) {
      Entity entity = new Entity();
     
      if (Constants.shouldHaveComponent(ComponentType.POSITION, i)) {
        PositionComponent pos = new PositionComponent();
        pos.pos.x = MathUtils.random(Constants.MIN_POS, Constants.MAX_POS);
        pos.pos.y = MathUtils.random(Constants.MIN_POS, Constants.MAX_POS);
        entity.add(pos);
      }
     
      if (Constants.shouldHaveComponent(ComponentType.MOVEMENT, i)) {
        MovementComponent mov = new MovementComponent();
        mov.velocity.x = MathUtils.random(Constants.MIN_VEL, Constants.MAX_VEL);
        mov.velocity.y = MathUtils.random(Constants.MIN_VEL, Constants.MAX_VEL);
        mov.accel.x = MathUtils.random(Constants.MIN_ACC, Constants.MAX_ACC);
        mov.accel.y = MathUtils.random(Constants.MIN_ACC, Constants.MAX_ACC);
       
        entity.add(mov);
      }
     
      if (Constants.shouldHaveComponent(ComponentType.RADIUS, i)) {
        RadiusComponent rad = new RadiusComponent();
        rad.radius = MathUtils.random(Constants.MIN_RADIUS, Constants.MAX_RADIUS);
        entity.add(rad);
      }
     
      if (Constants.shouldHaveComponent(ComponentType.STATE, i)) {
        entity.add(new StateComponent());
      }
     
      engine.addEntity(entity);
    }
   
    return engine;
  }
}
TOP

Related Classes of com.badlogic.ashley.benchmark.ashley.AshleyBenchmark

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.