使用符號在比較時即節(jié)省時間又節(jié)省內存,因為符號僅僅存儲一次
成都創(chuàng)新互聯(lián)是一家專注于成都網站設計、成都做網站、外貿網站建設與策劃設計,民權網站建設哪家好?成都創(chuàng)新互聯(lián)做網站,專注于網站建設十余年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:民權等地區(qū)。民權做網站價格咨詢:18980820575ruby的符號是一種不可改變的字符串,同一個符號在代碼中多次引用時,是指向同一個對象,擁有相同的object id
而字符串是可變的,代碼中的相同的內容有時卻要分別存儲,擁有不同的object id
用字符串作為hash的鍵,ruby要計算該字符串的hash值,并將其與hash中的其他鍵的hash進行比較
而用符號作為hash的鍵,因為符號的不可改變性,ruby僅僅比較該符號的object id是否與hash中的其他鍵的object id是否相同
當然使用符號也有缺點,ruby會將符號存儲在一個符號表中,知道進程結束才會釋放,在運行過程中是不會被gc回收的。當符號躲到一定程度就會造成內存的溢出,當然這只是理論情況下,誰又會床在足夠多的符號呢
在做字符串比較時,ruby只會比較符號的object id,不會去計算,這會比比較字符串快很多,因為計算時,ruby會調用hash函數計算鍵的hash值,然后用他與其他的進行比較
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節(jié)活動現已開啟,新人活動云服務器買多久送多久。