您好,登錄后才能下訂單哦!
使用符號在比較時即節省時間又節省內存,因為符號僅僅存儲一次
ruby的符號是一種不可改變的字符串,同一個符號在代碼中多次引用時,是指向同一個對象,擁有相同的object id
而字符串是可變的,代碼中的相同的內容有時卻要分別存儲,擁有不同的object id
用字符串作為hash的鍵,ruby要計算該字符串的hash值,并將其與hash中的其他鍵的hash進行比較
而用符號作為hash的鍵,因為符號的不可改變性,ruby僅僅比較該符號的object id是否與hash中的其他鍵的object id是否相同
當然使用符號也有缺點,ruby會將符號存儲在一個符號表中,知道進程結束才會釋放,在運行過程中是不會被gc回收的。當符號躲到一定程度就會造成內存的溢出,當然這只是理論情況下,誰又會床在足夠多的符號呢
在做字符串比較時,ruby只會比較符號的object id,不會去計算,這會比比較字符串快很多,因為計算時,ruby會調用hash函數計算鍵的hash值,然后用他與其他的進行比較
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。