1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

builtin: optimise the initialisation of the common 1 byte element arrays []u8

This commit is contained in:
Delyan Angelov
2022-12-22 20:08:05 +02:00
parent 8f8a186158
commit f9043c84a7
2 changed files with 47 additions and 22 deletions

View File

@ -24,9 +24,19 @@ fn __new_array_with_default_noscan(mylen int, cap int, elm_size int, val voidptr
len: mylen
cap: cap_
}
if val != 0 {
for i in 0 .. arr.len {
unsafe { arr.set_unsafe(i, val) }
if val != 0 && arr.data != unsafe { nil } {
if elm_size == 1 {
byte_value := *(&u8(val))
dptr := &u8(arr.data)
for i in 0 .. arr.len {
unsafe {
dptr[i] = byte_value
}
}
} else {
for i in 0 .. arr.len {
unsafe { arr.set_unsafe(i, val) }
}
}
}
return arr