You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Satendra Kumar (JIRA)" <ji...@apache.org> on 2016/05/28 15:53:12 UTC
[jira] [Updated] (KAFKA-3768) Replace all pattern match on boolean
value by if/elase block.
[ https://issues.apache.org/jira/browse/KAFKA-3768?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Satendra Kumar updated KAFKA-3768:
----------------------------------
Issue Type: Improvement (was: Bug)
> 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
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> Scala recommend use if/else clock instead of pattern match on boolean values.
> For example:
> 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"
> }
> }
> }
> Byte code comparison between method1 and method2:
> scala>javap -cp Comparasion
> 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
> }
> method1 have 23 line of byte code and 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)