Skip to content

Commit c74c0bd

Browse files
larubujoRX14
authored andcommittedDec 18, 2017
Optimize slice reverse (#5401)
1 parent 2e59d49 commit c74c0bd

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed
 

‎src/slice.cr

+10-6
Original file line numberDiff line numberDiff line change
@@ -212,13 +212,17 @@ struct Slice(T)
212212
def reverse!
213213
check_writable
214214

215-
i = 0
216-
j = size - 1
217-
while i < j
218-
@pointer.swap i, j
219-
i += 1
220-
j -= 1
215+
return self if size <= 1
216+
217+
p = @pointer
218+
q = @pointer + size - 1
219+
220+
while p < q
221+
p.value, q.value = q.value, p.value
222+
p += 1
223+
q -= 1
221224
end
225+
222226
self
223227
end
224228

0 commit comments

Comments
 (0)
Please sign in to comment.