使用符號在比較時即節(jié)省時間又節(jié)省內(nèi)存,因為符號僅僅存儲一次
ruby的符號是一種不可改變的字符串,同一個符號在代碼中多次引用時,是指向同一個對象,擁有相同的object id
而字符串是可變的,代碼中的相同的內(nèi)容有時卻要分別存儲,擁有不同的object id
用字符串作為hash的鍵,ruby要計算該字符串的hash值,并將其與hash中的其他鍵的hash進行比較
而用符號作為hash的鍵,因為符號的不可改變性,ruby僅僅比較該符號的object id是否與hash中的其他鍵的object id是否相同
當(dāng)然使用符號也有缺點,ruby會將符號存儲在一個符號表中,知道進程結(jié)束才會釋放,在運行過程中是不會被gc回收的。當(dāng)符號躲到一定程度就會造成內(nèi)存的溢出,當(dāng)然這只是理論情況下,誰又會床在足夠多的符號呢
在做字符串比較時,ruby只會比較符號的object id,不會去計算,這會比比較字符串快很多,因為計算時,ruby會調(diào)用hash函數(shù)計算鍵的hash值,然后用他與其他的進行比較
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。
網(wǎng)頁題目:為什么要使用符號作為hash的鍵-創(chuàng)新互聯(lián)
分享鏈接:http://chinadenli.net/article6/jjsog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、云服務(wù)器、商城網(wǎng)站、App設(shè)計、定制網(wǎng)站、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容