在OCaml中,模式匹配和性能的順序之間是否存在任何關係?根據匹配順序的OCaml性能
例如,如果我聲明類型:
type t = A | B | C
,然後執行一些模式匹配如下:
match t1 with
| A -> ...
| _ -> ...
從性能的角度來看,它相當於是
match t1 with
| B -> ...
| _ -> ...
假設在第一種情況下,A的數量與B的數量一樣多?
換句話說,在考慮績效時,我是否應該擔心某種類型的構造函數聲明的順序?
對於列表構造函數,結果會不同嗎?例如,如果我正在處理大型列表,因此知道「空列表」的情況會少得多,我應該總是把它放在模式匹配中。 – anol 2013-05-01 16:26:00
您應該編寫代碼以儘可能清楚。有很多很好的研究和努力致力於儘可能快地進行模式匹配。除此之外,我認爲在複雜模式匹配中存在太多的可能性來給出有用的答案。 (也許更有知識的人會願意的。) – 2013-05-01 16:35:44
@dhekir模式匹配完成「就好像按順序」。如果案例之間沒有重疊,就像空列表和非空列表之間的情況一樣,編譯器已經按照他們的意願命令它們。 – 2013-05-01 19:27:18