       return
     }
 
-    // Just copying to an Array is significantly faster than performing
-    // generic operations
-    self = Array(codeUnits).withUnsafeBufferPointer {
-      let raw = UnsafeRawBufferPointer($0)
-      return String._fromUTF8Repairing(raw.bindMemory(to: UInt8.self)).0
-    }
-    return
+    self = String._fromNonContiguousUnsafeBitcastUTF8Repairing(codeUnits).0
   }
 
   /// Creates a new string with the specified capacity in UTF-8 code units, and

}

extension String {
  /// Creates a string from the given Unicode code units in the specified
  /// encoding.
  ///

        codeUnits, encoding: sourceEncoding, repair: true)!.0
      return
    }
    if let str = codeUnits.withContiguousStorageIfAvailable({
      (buffer: UnsafeBufferPointer<C.Element>) -> String in
      return String._fromUTF8Repairing(
