Back to project page CircleWorldGDX.
The source code is released under:
MIT License
If you think the Android project CircleWorldGDX listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.fdangelo.circleworld.universeengine.utils; //w w w . j av a 2s .c o m import com.badlogic.gdx.utils.TimeUtils; public class UEProfiler { static private boolean profilerEnabled = true; static public void Update() { sampledFrames++; // Clear(); } private static final int MAX_SAMPLES = 8192; static private UEProfilerSample[] samples = new UEProfilerSample[MAX_SAMPLES]; static private int currentIndex = 0; static private int maxSamples = 0; static private int sampledFrames = 0; static public void Clear() { currentIndex = 0; maxSamples = 0; sampledFrames = 0; } static public void BeginSample(final String id) { if (!profilerEnabled) { return; } if (samples[maxSamples] == null) { samples[maxSamples] = new UEProfilerSample(); } samples[maxSamples].id = id; samples[maxSamples].startNanoTime = TimeUtils.nanoTime(); samples[maxSamples].endNanoTime = 0; samples[maxSamples].parent = currentIndex; currentIndex = maxSamples; maxSamples++; // Disable the profiler if we run out of samples if (maxSamples == samples.length) { Clear(); profilerEnabled = false; } } static public void EndSample() { if (!profilerEnabled) { return; } samples[currentIndex].endNanoTime = TimeUtils.nanoTime(); currentIndex = samples[currentIndex].parent; } static public float GetSampleTime(final String id) { if (!profilerEnabled) { return 0; } long nanoTime = 0; for (int i = 0; i < maxSamples; i++) { if (samples[i].id == id) { nanoTime += samples[i].endNanoTime - samples[i].startNanoTime; } } if (sampledFrames > 0) { nanoTime /= sampledFrames; } return nanoTime / 1000000000.0f; } }