2014-10-06 50 views
0

我有一個大的Tcl應用程序,其中嚴重陣列上。爲了加快速度,我正在考慮用dict而不是數組來重寫它。由於它的大小,我想只重寫計算密集程度最高的部分,並在兩個子系統的邊界處按照http://wiki.tcl.tk/5042段落「字典和數組」中所述的方式在數組和字典之間進行轉換。速度懲罰之間轉換Tcl陣列和字典

我是否必須考慮來自此轉換過程的嚴重速度負擔,還是內部結構實現如此相似以至於實際轉換可能被認爲是快速?

回答

1

數組和字符串都在內部使用散列表;它們的性能非常相似(相同的漸近式大O行爲,實際速度可能有點不同)。但是,如果您使用的是緊湊整數密鑰(即0,1,2,...),最好使用Tcl列表,這可能會更快(它們是C列下的)。

+1

我希望看到優化的字典緊湊整數。這不會促使像'dict get {jsonArr {0 foo 1 bar 2 baz} error 0} jsonArr 1'這樣的東西(讓我們面對它吧:用'lindex'嵌套'dict get'看起來不太好) - PS:Lua那樣做。 – 2014-10-07 00:29:04

+0

我也會期待這一點,但是如果性能真的很相似,那麼接下來我給出的Link中報告的差異如何大,以及我們如何解釋Tcl發行說明中的​​信息(對於8.5),那個字典比Array有更好的性能? – user1934428 2014-10-08 13:21:58