3
我試圖創建2個日誌記錄功能:一個是直接打印到標準輸出,另一個是與先行詞串[Error]
打印。連續登錄F#
let log message =
printfn message
let twError (tw:System.IO.TextWriter) message =
tw.Write("[Error] {0}", message)
let error (message:Printf.StringFormat<_>) =
let format = Printf.TextWriterFormat<_>(sprintf "[Error] %A" message)
log format
let date = System.DateTime.Now
log "%A" twError date
error "%s" <| date.ToString()
正如你所看到的,在error
功能我需要一個新的字符串,然後將其轉換爲TextWriterFormat
類型。但是,這會比直接寫入流的效率低,我應該如何更改error
函數以使其更高效?
答案是好的,但我也發現,有很多重複或接近重複的,這提供了額外的信息和示例。搜索'[f#] kprintf'。 –
@BentTranberg當我和您的查詢搜索,我發現'kprintf'慢得多比較'TextWriter',有沒有一樣快'TextWriter'其他方法? – MiP
@MiP - 你在哪裏發現'kprintf'比'TextWriter'慢?我一直無法找到您正在查看的來源。另外,你爲什麼需要它快速?這聽起來像你可能會做過早的優化。 – rmunn