fun tick()

in skiko/src/commonMain/kotlin/org/jetbrains/skiko/FPSCounter.kt [23:45]


    fun tick() {
        val time = currentNanoTime()
        val timestamp = time.nanosToMillis().toLong()
        val frameTime = time - lastTime
        lastTime = time

        times.add(frameTime)

        if (logOnTick && showLongFrames && frameTime > getLongFrameMillis().millisToNanos()) {
            println("$timestamp Long frame ${frameTime.nanosToMillis()} ms")
        }

        if ((time - lastLogTime) > periodSeconds.secondsToNanos() && times.isNotEmpty()) {
            average = (nanosPerSecond / times.average()).roundToInt()
            min = (nanosPerSecond / times.maxOrNull()!!).roundToInt()
            max = (nanosPerSecond / times.minOrNull()!!).roundToInt()
            times.clear()
            lastLogTime = time
            if (logOnTick) {
                println("[$timestamp] FPS $average ($min-$max)")
            }
        }
    }