@@ -21,64 +21,90 @@ print("------------------------------------------")
21
21
print ( " Encoding " )
22
22
23
23
let data = Data ( bytes)
24
- let foundationEncoding = timing ( name: " Foundation " ) {
24
+ let foundationEncodingString = timing ( name: " Foundation: Data to String " ) {
25
25
for _ in 1 ... runs {
26
26
_ = data. base64EncodedString ( )
27
27
}
28
28
}
29
29
30
- let base64Encoding = timing ( name: " Base64 " ) {
30
+ let foundationEncodingData = timing ( name: " Foundation: Data to Data " ) {
31
31
for _ in 1 ... runs {
32
- _ = Base64 . encode ( bytes : bytes ) // String(base64Encoding: bytes )
32
+ _ = data . base64EncodedData ( )
33
33
}
34
34
}
35
35
36
- let chromeEncoding = timing ( name: " Chromium " ) {
36
+ let chromeEncodingBytes = timing ( name: " Chromium: [UInt8] to [UInt8] " ) {
37
37
for _ in 1 ... runs {
38
- _ = Base64 . encodeChromium ( bytes: bytes) // String(base64Encoding: bytes)
38
+ let _ : [ UInt8 ] = Base64 . encodeChromium ( bytes: bytes)
39
+ }
40
+ }
41
+
42
+ let chromeEncodingString = timing ( name: " Chromium: [UInt8] to String " ) {
43
+ for _ in 1 ... runs {
44
+ let _ : String = Base64 . encodeChromium ( bytes: bytes)
45
+ }
46
+ }
47
+
48
+ let chromeEncodingData = timing ( name: " Chromium: Data to [UInt8] " ) {
49
+ for _ in 1 ... runs {
50
+ let _ : String = Base64 . encodeChromium ( bytes: data)
39
51
}
40
52
}
41
53
42
54
print ( " ------------------------------------------ " )
43
55
print ( " Decoding " )
44
56
45
- let foundationDecoding = timing ( name: " Foundation " ) {
57
+ let foundationDecodingFromString = timing ( name: " Foundation: String to Data " ) {
46
58
for _ in 1 ... runs {
47
59
_ = Data ( base64Encoded: base64)
48
60
}
49
61
}
50
62
51
- let base64Decoding = timing ( name: " Base64 " ) {
63
+ let encodedData = Data ( base64. utf8)
64
+ let foundationDecodingFromData = timing ( name: " Foundation: Data to Data " ) {
52
65
for _ in 1 ... runs {
53
- _ = try ! base64 . base64decoded ( )
66
+ _ = Data ( base64Encoded : encodedData )
54
67
}
55
68
}
56
69
57
- let chromeDecoding = timing ( name: " Chromium " ) {
70
+ let encodedUInt8Array = Array ( base64. utf8)
71
+ let chromeDecodingFromBytes = timing ( name: " Chromium: [UInt8] to [UInt8] " ) {
58
72
for _ in 1 ... runs {
59
- _ = try ! Base64 . decodeChromium ( bytes: [ UInt8 ] ( base64 . utf8 ) ) // String(base64Encoding: bytes )
73
+ _ = try ! Base64 . decodeChromium ( bytes: encodedUInt8Array )
60
74
}
61
75
}
62
76
63
- // print("------------------------------------------")
64
- // print("Results")
65
-
66
- var result : Int32 = 0
67
- if foundationEncoding < base64Encoding {
68
- print ( " Base64 encoding must be at least as fast as Foundation encoding " )
69
- result = 1
77
+ let chromeDecodingFromString = timing ( name: " Chromium: String to [UInt8] " ) {
78
+ for _ in 1 ... runs {
79
+ _ = try ! Base64 . decodeChromium ( string: base64)
80
+ }
70
81
}
71
82
72
- if foundationDecoding < base64Decoding {
73
- print ( " Base64 decoding must be at least as fast as Foundation decoding " )
74
- result = 1
83
+ let chromeDecodingFromData = timing ( name: " Chromium: Data to [UInt8] " ) {
84
+ for _ in 1 ... runs {
85
+ _ = try ! Base64 . decodeChromium ( bytes: encodedData)
86
+ }
75
87
}
76
88
77
- if result == 0 {
78
- let encodingGain = round ( foundationEncoding / base64Encoding * 1000 ) / 1000
79
- let decodingGain = round ( foundationDecoding / base64Decoding * 1000 ) / 1000
80
- print ( " Encoding: \( encodingGain) x " )
81
- print ( " Decoding: \( decodingGain) x " )
82
- }
89
+ // print("------------------------------------------")
90
+ // print("Results")
91
+
92
+ var result : Int32 = 0
93
+ //if foundationEncoding < base64Encoding {
94
+ // print("Base64 encoding must be at least as fast as Foundation encoding")
95
+ // result = 1
96
+ //}
97
+ //
98
+ //if foundationDecoding < base64Decoding {
99
+ // print("Base64 decoding must be at least as fast as Foundation decoding")
100
+ // result = 1
101
+ //}
102
+ //
103
+ //if result == 0 {
104
+ // let encodingGain = round(foundationEncoding / base64Encoding * 1000) / 1000
105
+ // let decodingGain = round(foundationDecoding / base64Decoding * 1000) / 1000
106
+ // print("Encoding: \(encodingGain)x")
107
+ // print("Decoding: \(decodingGain)x")
108
+ //}
83
109
84
110
exit ( result)
0 commit comments