A
Anon_Nymous
Gast
Hey,
habe folgendes in Java gecodet.
Hierbei handelt es sich um 2 Methoden, die einen Hex-String (der Länge n*4) in einen Binär-String umwandeln. Klappt auch alles super. Jetzt wollte ich das ganze aber noch nen bischen sicherer machen und nen paar Fehler abfangen.
Wie dem auch sei.. die beiden Methoden sind identisch, bis aus das bei der 2ten noch eine if-Abfrage mit bei ist. Die Mehtoden-Aufrufe sind auch identisch, da ich sie extra nochmal kopiert habe.
Aber jetzt frage ich mich, warum die 2te Methode schneller ist als die erste? Obswohl da noch eine if-Abfrage hinzugekommen ist. Und lustigerweise,
wenn ich erst Methode 2 und dann 1 aufrufe, dann ist 2 plötzlich langsamer...
Also immer die Methode die zuerst aufgerufen wird ist schneller. Wie kann das denn sein? Optimiert Java da irgendwas? Oder hab ich nen Fehler beim Aufruf der Methoden oder der Zeitmessung gemacht?
habe folgendes in Java gecodet.
Java:
import java.util.Date;
public class FillViewportHightDemo {
public static String hexToBinaryString1(String s) {
String buff = "";
for (int i = 0; i < s.length(); i += 4) {
buff += (Integer.toBinaryString(0x10000 | Integer.valueOf(s.substring(i, i + 4), 16))).substring(1);
}
return buff;
}
public static String hexToBinaryString2(String s) {
String buff = "";
if (!s.equals("") && !s.equals(null) && (s.length() % 4 == 0)) {
for (int i = 0; i < s.length(); i += 4) {
buff += (Integer.toBinaryString(0x10000 | Integer.valueOf(s.substring(i, i + 4), 16))).substring(1);
}
}
return buff;
}
public static void main(String[] args) {
// Methode 1
String testString1 = "A5A5A5A5A5A5FFFF";
Date d1 = new Date();
long davor1 = d1.getTime();
for (int i = 0; i < 1000000; i++) {
hexToBinaryString1(testString1);
}
d1 = new Date();
System.out.println(d1.getTime() - davor1);
// Methode 2
String testString2 = "A5A5A5A5A5A5FFFF";
Date d2 = new Date();
long davor2 = d2.getTime();
for (int i = 0; i < 1000000; i++) {
hexToBinaryString2(testString2);
}
d2 = new Date();
System.out.println(d2.getTime() - davor2);
}
}
Hierbei handelt es sich um 2 Methoden, die einen Hex-String (der Länge n*4) in einen Binär-String umwandeln. Klappt auch alles super. Jetzt wollte ich das ganze aber noch nen bischen sicherer machen und nen paar Fehler abfangen.
Wie dem auch sei.. die beiden Methoden sind identisch, bis aus das bei der 2ten noch eine if-Abfrage mit bei ist. Die Mehtoden-Aufrufe sind auch identisch, da ich sie extra nochmal kopiert habe.
Aber jetzt frage ich mich, warum die 2te Methode schneller ist als die erste? Obswohl da noch eine if-Abfrage hinzugekommen ist. Und lustigerweise,
wenn ich erst Methode 2 und dann 1 aufrufe, dann ist 2 plötzlich langsamer...
Also immer die Methode die zuerst aufgerufen wird ist schneller. Wie kann das denn sein? Optimiert Java da irgendwas? Oder hab ich nen Fehler beim Aufruf der Methoden oder der Zeitmessung gemacht?