@@ -52,7 +52,7 @@ enum SampleKind {
5252
5353func sampleData( size: Int ) -> Data {
5454 var data = Data ( count: size)
55- data. withUnsafeMutableBytes { arc4random_buf ( $0, size) }
55+ data. withUnsafeMutableBytes { getRandomBuf ( baseAddress : $0, count : size) }
5656 return data
5757}
5858
@@ -89,11 +89,33 @@ func sampleString() -> Data {
8989 return Data ( bytes: bytes)
9090}
9191
92+ #if os(Linux)
93+ import Glibc
94+ #endif
95+
96+ @inline ( __always)
97+ func getRandomBuf( _ arg: UnsafeMutableBufferPointer < UInt8 > ) {
98+ #if os(Linux)
99+ getrandom ( arg. baseAddress, arg. count, 0 )
100+ #else
101+ arc4random_buf ( arg. baseAddress, arg. count)
102+ #endif
103+ }
104+
105+ @inline ( __always)
106+ func getRandomBuf( baseAddress: UnsafeMutablePointer < UInt8 > , count: Int ) {
107+ #if os(Linux)
108+ getrandom ( arg. baseAddress, arg. count, 0 )
109+ #else
110+ arc4random_buf ( baseAddress, count)
111+ #endif
112+ }
113+
92114func sampleBridgedNSData( ) -> Data {
93115 let count = 1033
94116 var bytes = [ UInt8] ( repeating: 0 , count: count)
95117 bytes. withUnsafeMutableBufferPointer {
96- arc4random_buf ( $0. baseAddress , $0 . count )
118+ getRandomBuf ( $0)
97119 }
98120 let data = NSData ( bytes: bytes, length: count)
99121 return Data ( referencing: data)
@@ -151,7 +173,7 @@ func benchmark_AppendBytes(_ N: Int, _ count: Int, _ data_: Data) {
151173func benchmark_AppendArray( _ N: Int , _ count: Int , _ data_: Data ) {
152174 var bytes = [ UInt8] ( repeating: 0 , count: count)
153175 bytes. withUnsafeMutableBufferPointer {
154- arc4random_buf ( $0. baseAddress , $0 . count )
176+ getRandomBuf ( $0)
155177 }
156178 for _ in 1 ... 10000 * N {
157179 var data = data_
0 commit comments