12
0

Add TPSWatcher #62

Manuell gemergt
Lixfel hat 9 Commits von TPS nach master 2020-11-07 11:06:32 +01:00 zusammengeführt
2 geänderte Dateien mit 98 neuen und 0 gelöschten Zeilen
Nur Änderungen aus Commit 987f4f5477 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -32,6 +32,7 @@ import org.bukkit.plugin.java.JavaPlugin;
public class Core extends JavaPlugin{
private static Core instance;
private static final int version;
private static TPSWatcher tpsWatcher;
static{
String packageName = Bukkit.getServer().getClass().getPackage().getName();
@ -52,6 +53,7 @@ public class Core extends JavaPlugin{
@Override
public void onLoad() {
setInstance(this);
tpsWatcher = new TPSWatcher();
}
@Override
@ -75,10 +77,14 @@ public class Core extends JavaPlugin{
public static Core getInstance() {
return instance;
}
public static int getVersion(){
return version;
}
public static TPSWatcher getTpsWatcher() {
return tpsWatcher;
}
private static void setInstance(Core instance) {
Core.instance = instance;

Datei anzeigen

@ -0,0 +1,92 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.core;
import org.bukkit.Bukkit;
import java.util.LinkedList;
public class TPSWatcher {
private static class TPSMeter {
Veraltet
Review

Da wir weder die statistische Abweichung messen noch die Werte irgendwo hier speichern, ist meiner Meinung nach jegliche Liste hier verkehrt. Es reicht, wenn sich der 10s-Durchschnitt alle 10s aktualisiert und der 1s-Durchschnitt sich sekündlich aktualisiert, da muss nicht jeder Tick da sein => Keine Listen nötig. Ich möchte eine Implementierung ohne jegliche Listen.

Da wir weder die statistische Abweichung messen noch die Werte irgendwo hier speichern, ist meiner Meinung nach jegliche Liste hier verkehrt. Es reicht, wenn sich der 10s-Durchschnitt alle 10s aktualisiert und der 1s-Durchschnitt sich sekündlich aktualisiert, da muss nicht jeder Tick da sein => Keine Listen nötig. Ich möchte eine Implementierung ohne jegliche Listen.
Veraltet
Review

Warum können wir nicht auch die 10s immer passend die letzten 10 Sekunden anzeigt und nicht nach 10 Sekunden dann mal wieder die letzten 10 Sekunden, dass finde ich auch nicht so sinnvoll. Ich überlege mal ob ich das anders machen kann

Warum können wir nicht auch die 10s immer passend die letzten 10 Sekunden anzeigt und nicht nach 10 Sekunden dann mal wieder die letzten 10 Sekunden, dass finde ich auch nicht so sinnvoll. Ich überlege mal ob ich das anders machen kann
Veraltet
Review

Weil wir dann 10 Werte cachen müssen. Deshalb. Ist wesentlich aufwändiger und aufwändiger zu warten für einen wesentlich geringeren Vorteil

Weil wir dann 10 Werte cachen müssen. Deshalb. Ist wesentlich aufwändiger und aufwändiger zu warten für einen wesentlich geringeren Vorteil
private LinkedList<Double> meter = new LinkedList<>();
private int count;
public TPSMeter(int count) {
this.count = count;
}
public void add(double tps) {
meter.addLast(tps);
if (meter.size() > count) meter.removeFirst();
}
public double get() {
double total = 0;
for (double d : meter) total += d;
Veraltet
Review

Wann wird now < 0?

Wann wird now < 0?
return total / meter.size();
}
}
private double now = 20.0;
private TPSMeter one_minute = new TPSMeter(1200);
private TPSMeter five_minutes = new TPSMeter(6000);
private TPSMeter ten_minutes = new TPSMeter(12000);
private long lastTime = System.currentTimeMillis();
private static final double tickTimeDefault = 1000 / 20.0;
private static final double tickDefault = 20.0;
TPSWatcher() {
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
long tickTime = System.currentTimeMillis() - lastTime;
Veraltet
Review

Ich hätte gernde die Funktionalität als Static-Funktionalität, da wir sowieso nie mehr als einen TPSWatcher benötigen werden und der Aufruf für den Erhalt von TPS Werten kürzer wird.

Ich hätte gernde die Funktionalität als Static-Funktionalität, da wir sowieso nie mehr als einen TPSWatcher benötigen werden und der Aufruf für den Erhalt von TPS Werten kürzer wird.
lastTime = System.currentTimeMillis();
if (tickTime != 0) {
Veraltet
Review

Das hier, nur das hier einfach alle 1s bzw. alle 10s ausführen, und du hast deine DurchschnittsTPS für die letzte 1s/10s.

Das hier, nur das hier einfach alle 1s bzw. alle 10s ausführen, und du hast deine DurchschnittsTPS für die letzte 1s/10s.
Veraltet
Review

Kann ich es einfach jede Sekunde machen, und dann 10 werte merken für 10 Sekunden? Das ganze könnte ich in einem fixen array speichern und auswerten

Kann ich es einfach jede Sekunde machen, und dann 10 werte merken für 10 Sekunden? Das ganze könnte ich in einem fixen array speichern und auswerten
now = (tickTimeDefault / tickTime) * tickDefault;
} else {
now = 0;
}
one_minute.add(now);
five_minutes.add(now);
ten_minutes.add(now);
}, 1, 1);
}
public double getTPS() {
return now;
}
Veraltet
Review

30s erscheint mir unnötig.

30s erscheint mir unnötig.
Veraltet
Review

Ok dann werde ich diesen Wert rausstreichen

Ok dann werde ich diesen Wert rausstreichen
public double get1TPS() {
return one_minute.get();
}
public double get5TPS() {
return five_minutes.get();
}
public double get10TPS() {
return ten_minutes.get();
Veraltet
Review

Ich würde gerne mit dieser Methode wenn dann ALLE verfügbaren TPS-Werte bekommen wollen, auch die von Spigot gemessenen.

Ich würde gerne mit dieser Methode wenn dann ALLE verfügbaren TPS-Werte bekommen wollen, auch die von Spigot gemessenen.
Veraltet
Review

Ok also willst du das dann als array oder liste?

Ok also willst du das dann als array oder liste?
}
}