For Schleifen in Bukkit (Java) schlanker formulieren?

... komplette Frage anzeigen

3 Antworten

// Und wenn einer der inneren Player NICHT in der OpList ist:
if( Chat.operator.contains(seek.getName().toLowerCase()) == false ) {                                          

// Uuund wenn DIESER Player den Namen von args[1] traegt:

if( Chat.operator.contains(seek.getName().toLowerCase()) == false ) {

Dafuq?

Und du behauptest vorkenntnisse zu haben? Seltsam, dass sich so jemand Gedanken über Optimierung macht.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PerfectMuffin
27.04.2016, 06:11

Okay, um etwas produktiver zu sein:

1. Das ist zwei mal die gleiche Zeile.

2. Variablen mit Großbuchstaben zu benennen verstößt aus gutem Grund gegen die Konvention...zumindest scheint "Chat" keine Klasse zu sein, wenn doch, dann vermutlich eine unnötige.

3. ==false ist etwas, was nur die blutigsten Anfänger schreiben.

4. Player hat eine Funktion um auf op-status zu testen.

5. Genau genommen sind es drei Schleifen, von denen zwei unnötig sind.

6. Copy paste ist NICHT dein Freund.

7. Java ist alles andere als langsam und dein Fetzen Code hat so gut wie keinen Einfluss auf die Performance von irgendetwas.

Wegen sowas habe ich Vorurteile gegen Bukkit "devs".

0
Kommentar von androhecker
27.04.2016, 06:22

Da muss man nicht mal Ahnung von Optimierung haben, dass der gleiche Code zwei Mal relativ wenig Sinn ergibt (in dem Fall), sieht glaube ich jeder.

0

Was zum Geier?

Warum durchläufst du die Spielerliste mehrmals?

Antwort bewerten Vielen Dank für Deine Bewertung

Was soll so ein Mist? Wenn du eine schnelle Lösung suchts, solltest du die liste.parallelStream().forEach() Funktion benutzen, aber dann gleich alles auf einmal testen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PerfectMuffin
27.04.2016, 06:34

Lambdas, bzw. generell Java 8-Features sind hier vielleicht doch etwas Overkill.

1
Kommentar von androhecker
27.04.2016, 07:10

Mittlerweile hat sich Java 8 durchgesetzt, und eigentlich ist diese Methode immer deutlich besser wenn es egal ist was zuerst kommt. (Was ja bei Spielern der Fall ist)

1
Kommentar von androhecker
28.04.2016, 12:42

Ein reines Lamda for Each ist ungefähr genauso schnell (ein for loop benutzt auch nur einen Iterator), aber mit einem Parallel Stream ist es bei großen Listen um einiges schneller, weil diese wie der Name schon sagt in mehreren Threads ausgeführt werden, hat eben nur das Problem, dass die Reihenfolge ignoriert wird.

0

Was möchtest Du wissen?