Quellcode durchsuchen

Uses `reduce(into:,_)` instead of `reduce(_,_)` which gives an order of magnitude performance gain.

Tests on MacBook Pro 2018 (2,3 GHz Quad-Core Intel Core i5, RAM LPDDR3) show for array of random 100_000 elements:
* original implementation 0.410 sec
* proposed implementation 0.048 sec
* also tried `lazy.map{ String(format: "%02x", $0) }.joined()` which takes 0.232 sec
Valeriy Van vor 5 Jahren
Ursprung
Commit
8b6740597a
1 geänderte Dateien mit 2 neuen und 2 gelöschten Zeilen
  1. 2 2
      Sources/CryptoSwift/Array+Extension.swift

+ 2 - 2
Sources/CryptoSwift/Array+Extension.swift

@@ -64,12 +64,12 @@ extension Array where Element == UInt8 {
   }
 
   public func toHexString() -> String {
-    `lazy`.reduce("") {
+    `lazy`.reduce(into: "") {
       var s = String($1, radix: 16)
       if s.count == 1 {
         s = "0" + s
       }
-      return $0 + s
+      $0 += s
     }
   }
 }