[ https://issues.apache.org/jira/browse/KAFKA-3768?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ismael Juma resolved KAFKA-3768. -------------------------------- Resolution: Fixed Fix Version/s: 0.10.1.0 Issue resolved by pull request 1445 [https://github.com/apache/kafka/pull/1445] > Replace all pattern match on boolean value by if/elase block. > ------------------------------------------------------------- > > Key: KAFKA-3768 > URL: https://issues.apache.org/jira/browse/KAFKA-3768 > Project: Kafka > Issue Type: Improvement > Reporter: Satendra Kumar > Priority: Minor > Fix For: 0.10.1.0 > > Original Estimate: 1h > Remaining Estimate: 1h > > Scala recommend use if/else block instead of pattern match on boolean > values. > For example: > {code:title=Comparasion.scala|borderStyle=solid} > class Comparasion { > def method1(flag: Boolean): String = { > flag match { > case true => "TRUE" > case false => "FALSE" > } > } > def method2(flag: Boolean): String = { > if(flag) { > "TRUE" > }else { > "FALSE" > } > } > } > {code} > Byte code comparison between method1 and method2: > scala>javap -cp Comparasion > {code:title=Comparasion.class|borderStyle=solid} > Compiled from "<console>" > public class Comparasion { > public java.lang.String method1(boolean); > Code: > 0: iload_1 > 1: istore_2 > 2: iconst_1 > 3: iload_2 > 4: if_icmpne 13 > 7: ldc #9 // String TRUE > 9: astore_3 > 10: goto 21 > 13: iconst_0 > 14: iload_2 > 15: if_icmpne 23 > 18: ldc #11 // String FALSE > 20: astore_3 > 21: aload_3 > 22: areturn > 23: new #13 // class scala/MatchError > 26: dup > 27: iload_2 > 28: invokestatic #19 // Method > scala/runtime/BoxesRunTime.boxToBoolean:(Z)Ljava/lang/Boolean; > 31: invokespecial #23 // Method > scala/MatchError."<init>":(Ljava/lang/Object;)V > 34: athrow > public java.lang.String method2(boolean); > Code: > 0: iload_1 > 1: ifeq 9 > 4: ldc #9 // String TRUE > 6: goto 11 > 9: ldc #11 // String FALSE > 11: areturn > public Comparasion(); > Code: > 0: aload_0 > 1: invokespecial #33 // Method > java/lang/Object."<init>":()V > 4: return > } > {code} > method1 have 23 line of byte code and method2 have only 6 line byte code. > Pattern match are more expensive comparison to if/else block. -- This message was sent by Atlassian JIRA (v6.3.4#6332)