LuciferYang commented on code in PR #37843:
URL: https://github.com/apache/spark/pull/37843#discussion_r967260907


##########
sql/catalyst/src/main/java/org/apache/spark/sql/connector/util/V2ExpressionSQLBuilder.java:
##########
@@ -393,4 +384,20 @@ private String joinListToString(
     }
     return joiner.toString();
   }
+
+  private String[] expressionsToStringArray(Expression[] expressions) {

Review Comment:
   Ignore the complexity of `build(expressions[i])` compare 
   
   ```
   Arrays.stream(input).mapToObj(String::valueOf).toArray(String[]::new);
   ```
   vs
   
   ```
   String[] ret = new String[input.length];
     for (int i = 0; i < input.length; i++) {
         ret[i] = String.valueOf(input[i]);
      }
      return ret;
   ```
   
   with input size `1, 5, 10, 20, 50, 100, 500, 1000`:
   
   Java 8
   
   ```
   OpenJDK 64-Bit Server VM 1.8.0_345-b01 on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
   Test map to String Array with input size 1:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
--------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    5              6     
      1         18.8          53.3       1.0X
   Use Loop api                                            2              2     
      0         53.5          18.7       2.8X
   
   OpenJDK 64-Bit Server VM 1.8.0_345-b01 on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
   Test map to String Array with input size 5:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
--------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                   11             11     
      0          9.4         106.1       1.0X
   Use Loop api                                            6              6     
      0         16.3          61.3       1.7X
   
   OpenJDK 64-Bit Server VM 1.8.0_345-b01 on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
   Test map to String Array with input size 10:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    17             17    
       0          6.1         165.2       1.0X
   Use Loop api                                            12             12    
       0          8.5         117.6       1.4X
   
   OpenJDK 64-Bit Server VM 1.8.0_345-b01 on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
   Test map to String Array with input size 20:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    30             31    
       0          3.3         301.1       1.0X
   Use Loop api                                            24             25    
       0          4.1         244.1       1.2X
   
   OpenJDK 64-Bit Server VM 1.8.0_345-b01 on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
   Test map to String Array with input size 50:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    69             70    
       0          1.5         689.3       1.0X
   Use Loop api                                            59             60    
       0          1.7         593.2       1.2X
   
   OpenJDK 64-Bit Server VM 1.8.0_345-b01 on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
   Test map to String Array with input size 100:  Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    136            136   
        0          0.7        1361.4       1.0X
   Use Loop api                                            116            118   
        4          0.9        1162.4       1.2X
   
   OpenJDK 64-Bit Server VM 1.8.0_345-b01 on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
   Test map to String Array with input size 500:  Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    704            705   
        2          0.1        7037.3       1.0X
   Use Loop api                                            663            665   
        2          0.2        6631.6       1.1X
   
   OpenJDK 64-Bit Server VM 1.8.0_345-b01 on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
   Test map to String Array with input size 1000:  Best Time(ms)   Avg Time(ms) 
  Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
-----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    1434           1463  
        41          0.1       14344.9       1.0X
   Use Loop api                                            1333           1345  
        17          0.1       13331.1       1.1X
   ```
   
   Java 11
   
   ```
   OpenJDK 64-Bit Server VM 11.0.16+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 1:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
--------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    6              7     
      1         16.1          62.2       1.0X
   Use Loop api                                            2              2     
      0         46.3          21.6       2.9X
   
   OpenJDK 64-Bit Server VM 11.0.16+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 5:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
--------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                   13             13     
      1          7.7         130.2       1.0X
   Use Loop api                                            7              7     
      0         15.0          66.7       2.0X
   
   OpenJDK 64-Bit Server VM 11.0.16+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 10:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    21             21    
       1          4.8         209.2       1.0X
   Use Loop api                                            12             13    
       1          8.0         125.0       1.7X
   
   OpenJDK 64-Bit Server VM 11.0.16+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 20:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    37             37    
       1          2.7         365.7       1.0X
   Use Loop api                                            25             26    
       1          4.0         251.7       1.5X
   
   OpenJDK 64-Bit Server VM 11.0.16+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 50:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    82             83    
       1          1.2         815.7       1.0X
   Use Loop api                                            63             64    
       1          1.6         625.1       1.3X
   
   OpenJDK 64-Bit Server VM 11.0.16+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 100:  Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    156            157   
        1          0.6        1561.3       1.0X
   Use Loop api                                            125            126   
        1          0.8        1248.5       1.3X
   
   OpenJDK 64-Bit Server VM 11.0.16+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 500:  Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    888            892   
        4          0.1        8880.8       1.0X
   Use Loop api                                            711            713   
        2          0.1        7112.6       1.2X
   
   OpenJDK 64-Bit Server VM 11.0.16+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 1000:  Best Time(ms)   Avg Time(ms) 
  Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
-----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    1810           1812  
         4          0.1       18096.4       1.0X
   Use Loop api                                            1438           1442  
         4          0.1       14384.3       1.3X
   ```
   
   Java 17
   
   ```
   OpenJDK 64-Bit Server VM 17.0.4+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 1:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
--------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    5              5     
      0         19.1          52.4       1.0X
   Use Loop api                                            2              2     
      0         53.4          18.7       2.8X
   
   OpenJDK 64-Bit Server VM 17.0.4+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 5:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
--------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                   11             11     
      0          9.5         105.6       1.0X
   Use Loop api                                            6              6     
      0         17.4          57.6       1.8X
   
   OpenJDK 64-Bit Server VM 17.0.4+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 10:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    17             17    
       2          6.0         166.3       1.0X
   Use Loop api                                            11             11    
       0          9.4         106.6       1.6X
   
   OpenJDK 64-Bit Server VM 17.0.4+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 20:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    31             32    
       1          3.2         313.6       1.0X
   Use Loop api                                            21             22    
       0          4.7         210.9       1.5X
   
   OpenJDK 64-Bit Server VM 17.0.4+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 50:  Best Time(ms)   Avg Time(ms)   
Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
---------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    72             73    
       0          1.4         718.4       1.0X
   Use Loop api                                            53             54    
       1          1.9         533.0       1.3X
   
   OpenJDK 64-Bit Server VM 17.0.4+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 100:  Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    141            142   
        1          0.7        1409.8       1.0X
   Use Loop api                                            107            108   
        1          0.9        1066.5       1.3X
   
   OpenJDK 64-Bit Server VM 17.0.4+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 500:  Best Time(ms)   Avg Time(ms)  
 Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    807            808   
        0          0.1        8074.0       1.0X
   Use Loop api                                            655            656   
        1          0.2        6546.1       1.2X
   
   OpenJDK 64-Bit Server VM 17.0.4+8-LTS on Linux 5.15.0-1019-azure
   Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz
   Test map to String Array with input size 1000:  Best Time(ms)   Avg Time(ms) 
  Stdev(ms)    Rate(M/s)   Per Row(ns)   Relative
   
-----------------------------------------------------------------------------------------------------------------------------
   Use Arrays.steam api                                    1636           1637  
         1          0.1       16363.4       1.0X
   Use Loop api                                            1333           1337  
         5          0.1       13334.7       1.2X
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to