Github user mgaido91 commented on the issue:
https://github.com/apache/spark/pull/19916
thanks for your answer @kiszk. I included the code in a main function and
run it with the command I showed in the previous comment.
The loop is not eliminated, I checked the java bytecode as said, and the
only difference between the two loops is an additional operation `checkcast`.
For reference I can report here the bytecode:
```
0: new #2 // class java/lang/Integer
3: dup
4: iconst_1
5: invokespecial #3 // Method
java/lang/Integer."<init>":(I)V
8: astore_1
9: invokestatic #4 // Method
java/lang/System.currentTimeMillis:()J
12: lstore_2
13: lconst_0
14: lstore 4
16: lload 4
18: ldc2_w #5 // long 1000000000l
21: lcmp
22: ifge 48
25: aload_1
26: checkcast #2 // class java/lang/Integer
29: invokevirtual #7 // Method
java/lang/Integer.intValue:()I
32: iconst_1
33: iadd
34: invokestatic #8 // Method
java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
37: astore 6
39: lload 4
41: lconst_1
42: ladd
43: lstore 4
45: goto 16
48: invokestatic #4 // Method
java/lang/System.currentTimeMillis:()J
51: lstore 4
53: getstatic #9 // Field
java/lang/System.out:Ljava/io/PrintStream;
56: new #10 // class
java/lang/StringBuilder
59: dup
60: invokespecial #11 // Method
java/lang/StringBuilder."<init>":()V
63: ldc #12 // String Time for casting:
65: invokevirtual #13 // Method
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
68: lload 4
70: lload_2
71: lsub
72: invokevirtual #14 // Method
java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
75: invokevirtual #15 // Method
java/lang/StringBuilder.toString:()Ljava/lang/String;
78: invokevirtual #16 // Method
java/io/PrintStream.println:(Ljava/lang/String;)V
81: invokestatic #4 // Method
java/lang/System.currentTimeMillis:()J
84: lstore 6
86: aload_1
87: checkcast #2 // class java/lang/Integer
90: astore 8
92: lconst_0
93: lstore 9
95: lload 9
97: ldc2_w #5 // long 1000000000l
100: lcmp
101: ifge 125
104: aload 8
106: invokevirtual #7 // Method
java/lang/Integer.intValue:()I
109: iconst_1
110: iadd
111: invokestatic #8 // Method
java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
114: astore 11
116: lload 9
118: lconst_1
119: ladd
120: lstore 9
122: goto 95
125: invokestatic #4 // Method
java/lang/System.currentTimeMillis:()J
128: lstore 9
130: getstatic #9 // Field
java/lang/System.out:Ljava/io/PrintStream;
133: new #10 // class
java/lang/StringBuilder
136: dup
137: invokespecial #11 // Method
java/lang/StringBuilder."<init>":()V
140: ldc #17 // String Time without
casting:
142: invokevirtual #13 // Method
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
145: lload 9
147: lload 6
149: lsub
150: invokevirtual #14 // Method
java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
153: invokevirtual #15 // Method
java/lang/StringBuilder.toString:()Ljava/lang/String;
156: invokevirtual #16 // Method
java/io/PrintStream.println:(Ljava/lang/String;)V
159: return
```
Did I answer properly to your questions?
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]