Hey, ich hatte mich letzte Zeit bisschen mit der Performance Optimierung von Java beschäftigt. Und hab eine Methode bisschen abgewandelt. Jetzt ist meine Frage welche die bessere Performance hat und ob sich der Aufwand überhaupt gelohnt hätte (Hätte mich das Thema nicht einfach mal interessiert). Ein Profiler kann ich schwer nutzen da es sich um ein Plugin für Spigot (Minecraft Server) handelt. Vllt könnt ihr mir ja auch so weiterhelfen
Edit: Was ich vergessen hatte anzumerken ist, das data.getCoLeader bzw data.getMember bei jedem aufruf eine ganze Config aus einer HashMap läd und aus dieser eine bestimmte StringListe zurückgibt.
[CODE lang="java" title="ohne optimierung"]public List<String> getClanInfo(String clan) {
List<String> info = new ArrayList<String>();
List<String> membernames = new ArrayList<String>();
List<String> coleadernames = new ArrayList<String>();
String friendlyfire;
for(String uuid : data.getCoLeaders(clan)) {
coleadernames.add(Bukkit.getOfflinePlayer(UUID.fromString(uuid)).getName());
}
for(String uuid : data.getMembers(clan)) {
membernames.add(Bukkit.getOfflinePlayer(UUID.fromString(uuid)).getName());
}
if(Boolean.valueOf(data.getClanData(clan, "friendlyfire").toString()) == true) {
friendlyfire = "§cenable";
}else {
friendlyfire = "§adisable";
}
info.add(messages.getPrefix() + "§6----------------ClanInfo---------------");
info.add(messages.getPrefix() + "§8name: §7" + clan);
info.add(messages.getPrefix() + "§8description: §7" + data.getClanData(clan, "description"));
info.add(messages.getPrefix() + "§8leader: §7" + Bukkit.getOfflinePlayer(UUID.fromString(data.getClanData(clan, "leader").toString())).getName());
info.add(messages.getPrefix() + "§8friendlyfire: " + friendlyfire);
info.add(messages.getPrefix() + "§8public: §7" + data.isPublic(clan));
info.add(messages.getPrefix() + "§8coleader: §7" + coleadernames);
info.add(messages.getPrefix() + "§8members: §7" + membernames);
info.add(messages.getPrefix() + "§6----------------ClanInfo---------------");
return info;[/CODE]
[CODE lang="java" title="mit optimierung"]public String[] getClanInfo(String clan) {
final String[] info = new String[9];
final String[] coleader_uuids = data.getCoLeaders(clan).toArray(new String[0]);
final String[] member_uuids = data.getMembers(clan).toArray(new String[0]);
final String[] membernames = new String[member_uuids.length];
final String[] coleadernames = new String[coleader_uuids.length];
String friendlyfire;
final int j_coleader = coleader_uuids.length;
for(int i = 0; i < j_coleader; i++) {
coleadernames = Bukkit.getOfflinePlayer(UUID.fromString(coleader_uuids)).getName();
}
final int j_member = member_uuids.length;
for(int i = 0; i < j_member; i++) {
membernames = Bukkit.getOfflinePlayer(UUID.fromString(member_uuids)).getName();
}
if((Boolean)data.getClanData(clan, "friendlyfire") == true) {
friendlyfire = "§cenable";
}else {
friendlyfire = "§adisable";
}
info[0] = messages.getPrefix() + "§6----------------ClanInfo---------------";
info[1] = messages.getPrefix() + "§8name: §7" + clan;
info[2] = messages.getPrefix() + "§8description: §7" + data.getClanData(clan, "description");
info[3] = messages.getPrefix() + "§8leader: §7" + Bukkit.getOfflinePlayer(UUID.fromString(data.getClanData(clan, "leader").toString())).getName();
info[4] = messages.getPrefix() + "§8friendlyfire: " + friendlyfire;
info[5] = messages.getPrefix() + "§8public: §7" + data.isPublic(clan);
info[6] = messages.getPrefix() + "§8coleader: §7" + Arrays.toString(coleadernames);
info[7] = messages.getPrefix() + "§8members: §7" + Arrays.toString(membernames);
info[8] = messages.getPrefix() + "§6----------------ClanInfo---------------";
return info;
}[/CODE]
[CODE lang="java" title="ohne optimierung"]public List<String> getClanInfo(String clan) {
List<String> info = new ArrayList<String>();
List<String> membernames = new ArrayList<String>();
List<String> coleadernames = new ArrayList<String>();
String friendlyfire;
for(String uuid : data.getCoLeaders(clan)) {
coleadernames.add(Bukkit.getOfflinePlayer(UUID.fromString(uuid)).getName());
}
for(String uuid : data.getMembers(clan)) {
membernames.add(Bukkit.getOfflinePlayer(UUID.fromString(uuid)).getName());
}
if(Boolean.valueOf(data.getClanData(clan, "friendlyfire").toString()) == true) {
friendlyfire = "§cenable";
}else {
friendlyfire = "§adisable";
}
info.add(messages.getPrefix() + "§6----------------ClanInfo---------------");
info.add(messages.getPrefix() + "§8name: §7" + clan);
info.add(messages.getPrefix() + "§8description: §7" + data.getClanData(clan, "description"));
info.add(messages.getPrefix() + "§8leader: §7" + Bukkit.getOfflinePlayer(UUID.fromString(data.getClanData(clan, "leader").toString())).getName());
info.add(messages.getPrefix() + "§8friendlyfire: " + friendlyfire);
info.add(messages.getPrefix() + "§8public: §7" + data.isPublic(clan));
info.add(messages.getPrefix() + "§8coleader: §7" + coleadernames);
info.add(messages.getPrefix() + "§8members: §7" + membernames);
info.add(messages.getPrefix() + "§6----------------ClanInfo---------------");
return info;[/CODE]
[CODE lang="java" title="mit optimierung"]public String[] getClanInfo(String clan) {
final String[] info = new String[9];
final String[] coleader_uuids = data.getCoLeaders(clan).toArray(new String[0]);
final String[] member_uuids = data.getMembers(clan).toArray(new String[0]);
final String[] membernames = new String[member_uuids.length];
final String[] coleadernames = new String[coleader_uuids.length];
String friendlyfire;
final int j_coleader = coleader_uuids.length;
for(int i = 0; i < j_coleader; i++) {
coleadernames = Bukkit.getOfflinePlayer(UUID.fromString(coleader_uuids)).getName();
}
final int j_member = member_uuids.length;
for(int i = 0; i < j_member; i++) {
membernames = Bukkit.getOfflinePlayer(UUID.fromString(member_uuids)).getName();
}
if((Boolean)data.getClanData(clan, "friendlyfire") == true) {
friendlyfire = "§cenable";
}else {
friendlyfire = "§adisable";
}
info[0] = messages.getPrefix() + "§6----------------ClanInfo---------------";
info[1] = messages.getPrefix() + "§8name: §7" + clan;
info[2] = messages.getPrefix() + "§8description: §7" + data.getClanData(clan, "description");
info[3] = messages.getPrefix() + "§8leader: §7" + Bukkit.getOfflinePlayer(UUID.fromString(data.getClanData(clan, "leader").toString())).getName();
info[4] = messages.getPrefix() + "§8friendlyfire: " + friendlyfire;
info[5] = messages.getPrefix() + "§8public: §7" + data.isPublic(clan);
info[6] = messages.getPrefix() + "§8coleader: §7" + Arrays.toString(coleadernames);
info[7] = messages.getPrefix() + "§8members: §7" + Arrays.toString(membernames);
info[8] = messages.getPrefix() + "§6----------------ClanInfo---------------";
return info;
}[/CODE]