Skip to content

Instantly share code, notes, and snippets.

@PeterJohnson
Last active March 15, 2019 03:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PeterJohnson/a1141ce77b3ceed3fdc77c447bb0935c to your computer and use it in GitHub Desktop.
Save PeterJohnson/a1141ce77b3ceed3fdc77c447bb0935c to your computer and use it in GitHub Desktop.
public static double slowString();
Code:
0: invokestatic #2 // Method java/lang/System.currentTimeMillis:()J
3: l2d
4: ldc2_w #3 // double 1000.0d
7: ddiv
8: dstore_0
9: getstatic #5 // Field m_a:D
12: getstatic #6 // Field m_b:D
15: getstatic #7 // Field m_c:D
18: getstatic #8 // Field m_d:D
21: getstatic #9 // Field m_e:D
24: getstatic #10 // Field m_f:D
27: getstatic #11 // Field m_g:D
30: getstatic #12 // Field m_h:D
33: getstatic #13 // Field m_i:D
36: invokedynamic #14, 0 // InvokeDynamic #0:makeConcatWithConstants:(DDDDDDDDD)Ljava/lang/String;
41: astore_2
42: invokestatic #2 // Method java/lang/System.currentTimeMillis:()J
45: l2d
46: ldc2_w #3 // double 1000.0d
49: ddiv
50: dstore_3
51: getstatic #15 // Field m_output:Ljava/lang/String;
54: aload_2
55: invokedynamic #16, 0 // InvokeDynamic #1:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
60: putstatic #15 // Field m_output:Ljava/lang/String;
63: dload_3
64: dload_0
65: dsub
66: dreturn
public static double slowString();
Code:
0: invokestatic #2 // Method java/lang/System.currentTimeMillis:()J
3: l2d
4: ldc2_w #3 // double 1000.0d
7: ddiv
8: dstore_0
9: new #5 // class java/lang/StringBuilder
12: dup
13: invokespecial #6 // Method java/lang/StringBuilder."<init>":()V
16: ldc #7 // String Slow me down, m_a:
18: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: getstatic #9 // Field m_a:D
24: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
27: ldc #11 // String , m_b:
29: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
32: getstatic #12 // Field m_b:D
35: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
38: ldc #11 // String , m_b:
40: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
43: getstatic #13 // Field m_c:D
46: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
49: ldc #11 // String , m_b:
51: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
54: getstatic #14 // Field m_d:D
57: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
60: ldc #11 // String , m_b:
62: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
65: getstatic #15 // Field m_e:D
68: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
71: ldc #11 // String , m_b:
73: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
76: getstatic #16 // Field m_f:D
79: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
82: ldc #11 // String , m_b:
84: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
87: getstatic #17 // Field m_g:D
90: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
93: ldc #11 // String , m_b:
95: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
98: getstatic #18 // Field m_h:D
101: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
104: ldc #11 // String , m_b:
106: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
109: getstatic #19 // Field m_i:D
112: invokevirtual #10 // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
115: invokevirtual #20 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
118: astore_2
119: invokestatic #2 // Method java/lang/System.currentTimeMillis:()J
122: l2d
123: ldc2_w #3 // double 1000.0d
126: ddiv
127: dstore_3
128: new #5 // class java/lang/StringBuilder
131: dup
132: invokespecial #6 // Method java/lang/StringBuilder."<init>":()V
135: getstatic #21 // Field m_output:Ljava/lang/String;
138: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
141: aload_2
142: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
145: ldc #22 // String \n
147: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
150: invokevirtual #20 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
153: putstatic #21 // Field m_output:Ljava/lang/String;
156: dload_3
157: dload_0
158: dsub
159: dreturn
public class Slow3 {
private static double freememory = 0.0;
private static double m_a = 1.0;
private static double m_b = 2.0;
private static double m_c = 3.0;
private static double m_d = 4.0;
private static double m_e = 5.0;
private static double m_f = 6.0;
private static double m_g = 7.0;
private static double m_h = 8.0;
private static double m_i = 9.0;
private static String m_output;
public static double slowString() {
double start = System.currentTimeMillis() / 1000.0;
String fred;
fred = "Slow me down" + ", m_a: " + m_a + ", m_b: " + m_b + ", m_b: " + m_c + ", m_b: " + m_d + ", m_b: " + m_e
+ ", m_b: " + m_f + ", m_b: " + m_g + ", m_b: " + m_h + ", m_b: " + m_i;
double end = System.currentTimeMillis() / 1000.0;
m_output += fred + "\n";
return end - start;
}
public static double fastString() {
double start = System.currentTimeMillis() / 1000.0;
StringBuilder joe = new StringBuilder(256);
joe.append("Don't slow me down");
joe.append(", m_a: ").append(m_a);
joe.append(", m_b: ").append(m_b);
joe.append(", m_c: ").append(m_c);
joe.append(", m_d: ").append(m_d);
joe.append(", m_e: ").append(m_e);
joe.append(", m_f: ").append(m_f);
joe.append(", m_g: ").append(m_g);
joe.append(", m_h: ").append(m_h);
joe.append(", m_i: ").append(m_i);
double end = System.currentTimeMillis() / 1000.0;
m_output += joe.toString() + "\n";
return end - start;
}
public static void main(String[] args) {
m_output = "";
double f = fastString();
double t = slowString();
double t2 = slowString();
m_e = 5.5;
m_f = 4.2;
m_c = 2.0;
double t3 = slowString();
m_output += " fast time: " + f + "\n";
m_output += " slow time: " + t + "\n";
m_output += " slow time (again): " + t2 + "\n";
m_output += " slow time (after changing): " + t3 + "\n";
System.out.println(m_output);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment