Mik*_*keW 4 string optimization f#
我正在构建一个批处理插入4096条记录的MySql查询.实际插入非常快,但瓶颈是生成查询.优化这一点的任何提示?字符串生成目前比查询长约18倍.
let builder = StringBuilder(524288)
Printf.bprintf builder
"
INSERT INTO %s
(`ID`,
`Tag`,
`Port`,
`Excess`,
`Return`,
`StartDate`,
`EndDate`
)
values "
x.evaluationstable
evaluations
|> Seq.iter(fun (e) ->
Printf.bprintf builder
" (%d, '%s', '%s', %A, %A, %A, %A), "
e.ID
e.Tag
e.Port
e.Excess
e.Return
(e.StartDate.ToString(x.datetimeformat))
(e.EndDate.ToString(x.datetimeformat))
)
Run Code Online (Sandbox Code Playgroud)
Ray*_*gus 10
尝试使用StringBuilder.AppendFormat
而不是Printf.bprintf
.当我在你的问题的例子中做出这个改变时,我看到了巨大的性能提升(~80x).
evaluations
|> Seq.iter (fun (e) ->
builder.AppendFormat(
" ({0}, '{1}', '{2}', {3}, {4}, {5}, {6}), ",
e.ID,
e.Tag,
e.Port,
e.Excess,
e.Return,
(e.StartDate.ToString("MM/dd/yyyy")),
(e.EndDate.ToString("MM/dd/yyyy"))
) |> ignore
)
Run Code Online (Sandbox Code Playgroud)