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: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org