更快打电话给kind_of?或通过一个值迭代数组?
|
简而言之,调用kind_of的成本(时间和CPU)是否更高?两次还是用一个值创建一个新数组,然后遍历它?下面的“背景故事”仅详细说明了为什么我需要知道这一点,但不是回答问题的必读内容。
背景故事:
我有一堆位置数据。纬度/经度对及其代表的地点的名称。我需要按照与用户提供的另一对经纬度的距离对这些经度/纬度值进行排序。我必须实时计算距离,而这些距离以前是未知的。
我想通过将ѭ0映射添加到哈希表,然后获取键集并对其进行排序,然后按该顺序读出值,将很容易做到这一点。但是,存在两个距离相等的可能性,使两个关键点彼此相等。
我为此提出了两种解决方案
if hash.has_key?(distance)
hash[distance].kind_of? Array
? hash[distance] << placename
: hash.merge!({distance => [hash[distance], placename]})
else
hash.merge!({distance => placename})
end
然后在读取值时我检查
hash[distance] kind_of? Array ? grab the placename : iterate through hash and grab all placenames
每一次。或者,我可以使每个值从一开始就成为一个数组,即使它只有一个地名也是如此。
没有找到相关结果
已邀请:
3 个回复
茂坦湿床够
炬卤遁蝎变
森含械
方法,您将同时获得更高的性能和更好的可读性。 正如其他人所说,这可能不是瓶颈,在任何情况下收益都是微不足道的,您应该专注于其他事情!