【发布时间】:2021-10-23 19:01:08
【问题描述】:
我希望从不同的部分构建一个 Vector{UInt8},如下所示:
using BenchmarkTools
using Random
const a = Vector{UInt8}("Number 1: ")
const b = Vector{UInt8}(", Number 2: ")
const c = Vector{UInt8}(", Number 3: ")
const d = Vector{UInt8}(", Number 4: ")
function main(num2, num4)::Vector{UInt8}
return vcat(
a,
Vector{UInt8}(string(rand(1:100))),
b,
Vector{UInt8}(string(num2)),
c,
Vector{UInt8}(string(rand(1:100))),
d,
Vector{UInt8}(string(num4)),
)
end
@btime main(70.45, 12) # 486.224 ns (13 allocations: 1.22 KiB)
#Example output: "Number 1: 50, Number 2: 70.45, Number 3: 10, Number 4: 12"
转换为字符串然后 Vector{UInt8} 似乎是错误的。我不介意加入向量时发生的 1 分配。
【问题讨论】:
-
您能解释一下为什么将数字转换为字符串吗?你想做什么?
-
如果你想创建一个随机字符串,你不能写
string("Number 1: ", rand(1:100), ", Number 2: 70.45")吗? -
我想用 Vector{UInt8} 表示而不是字符串。我可以创建一个字符串,然后在其上使用 Vector{UInt8} ,但它分配给字符串和数组
-
那么
Vector{UInt8}版本的随机数字符串表示?你已经硬编码了数字70.45,这是否意味着你可以用预先计算的值替换它,或者这个数字可以改变吗?在这里使用整数和浮点数是完全不同的。 -
这个数字可以改变,由用户在函数中提供。我将同时使用整数和浮点数
标签: string julia byte allocation low-latency