str_A ^ str_B
OCaml的復雜性是什么?
uj5u.com熱心網友回復:
是O(n)
。這是函式的源代碼:
let ( ^ ) s1 s2 =
let l1 = string_length s1 and l2 = string_length s2 in
let s = bytes_create (l1 l2) in
string_blit s1 0 s 0 l1;
string_blit s2 0 s l1 l2;
bytes_unsafe_to_string s
該函式將兩個字串的長度相加,使用該長度分配一個新緩沖區,然后將兩個輸入字串復制到其中。
在某些語言中,運行時會優化重復的字串連接(例如幾個 JavaScript 實作),但我不相信 OCaml 會根據這個 benchmark做到這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488816.html