| /******************************************************************************* |
| * Copyright 2011 See AUTHORS file. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| ******************************************************************************/ |
| |
| package com.badlogic.gdx.utils; |
| |
| import com.badlogic.gdx.Gdx; |
| |
| /** @author xoppa */ |
| public class PerformanceCounters { |
| private final static float nano2seconds = 1f / 1000000000.0f; |
| |
| private long lastTick = 0L; |
| public final Array<PerformanceCounter> counters = new Array<PerformanceCounter>(); |
| |
| public PerformanceCounter add (final String name, final int windowSize) { |
| PerformanceCounter result = new PerformanceCounter(name, windowSize); |
| counters.add(result); |
| return result; |
| } |
| |
| public PerformanceCounter add (final String name) { |
| PerformanceCounter result = new PerformanceCounter(name); |
| counters.add(result); |
| return result; |
| } |
| |
| public void tick () { |
| final long t = TimeUtils.nanoTime(); |
| if (lastTick > 0L) tick((t - lastTick) * nano2seconds); |
| lastTick = t; |
| } |
| |
| public void tick (final float deltaTime) { |
| for (int i = 0; i < counters.size; i++) |
| counters.get(i).tick(deltaTime); |
| } |
| |
| public StringBuilder toString (final StringBuilder sb) { |
| sb.setLength(0); |
| for (int i = 0; i < counters.size; i++) { |
| if (i != 0) sb.append("; "); |
| counters.get(i).toString(sb); |
| } |
| return sb; |
| } |
| } |