亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 26272 | 回復(fù): 14
打印 上一主題 下一主題

ruby中怎么樣節(jié)約內(nèi)存 [復(fù)制鏈接]

論壇徽章:
30
水瓶座
日期:2014-08-22 21:06:3415-16賽季CBA聯(lián)賽之新疆
日期:2015-12-19 19:05:48IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:3315-16賽季CBA聯(lián)賽之上海
日期:2016-04-15 19:51:31程序設(shè)計版塊每日發(fā)帖之星
日期:2016-04-17 06:23:29程序設(shè)計版塊每日發(fā)帖之星
日期:2016-04-23 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-26 06:20:00每日論壇發(fā)貼之星
日期:2016-05-26 06:20:0015-16賽季CBA聯(lián)賽之遼寧
日期:2017-02-16 23:59:4715-16賽季CBA聯(lián)賽之天津
日期:2019-01-11 01:11:44
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-07-19 21:31 |只看該作者 |倒序瀏覽
本帖最后由 shijiang1130 于 2013-07-19 21:32 編輯

使用 Symbol
正如前邊提到的, Ruby 內(nèi)部一直在使用 Symbol ,比如 Ruby 程序中的各種名字,Symbol本質(zhì)上是 Ruby 符號表中的東西。使用 Symbol 處理名字可以降低 Ruby 內(nèi)存消耗,提高執(zhí)行速度,這點我們在下一篇文章中會看到。
那么 Symbol 對我們有什么用呢?當(dāng)然也是內(nèi)存。使用 String 的開銷太大了,因為每一個String 都是一個對象。想想前邊的例子,一個字符串每出現(xiàn)一次 Ruby 就會創(chuàng)建一個 String 對象。
通常來講,當(dāng)你面臨 String 還是 Symbol 的選擇時,可以參考以下標(biāo)準(zhǔn):
如果使用字符串的內(nèi)容,這個內(nèi)容可能會變化,使用 String
如果使用固定的名字或者說是標(biāo)識符,使用 Symbol
那么什么時候我們會用到名字呢?很多時候都會,比如枚舉值、關(guān)鍵字(哈希表關(guān)鍵字、方法的參數(shù))等等
作為哈希表的 key
哈希表是 Symbol 應(yīng)用最為廣泛的地方。
在ruby中,哈希和數(shù)組類似,一個哈希表是一系列 key/value 對的集合,只不過它的 key 取值范圍更廣泛,可以是任何對象,比如正則表達(dá)式。但通常我們都會取有意義的 key ,比如 String、Symbol 。
下面這個哈希表表示按城市分類的一些機(jī)器的集合。

一個哈希表例子
               
hosts{
       'beijing' => 'machine1',
       'shanghai'  => 'machine2',
       'guangzhou' => 'machine3',
       'tianjin' =>  'machine4',
       'shenzhen' => 'machine5'
}

如果要引用 beijing 的機(jī)器,使用 hosts['beijing'] 。但如果我們程序中要頻繁引用哈希表中 value ,這樣就不大好了,因為 Ruby 對每一次字符串引用都會生成一個 String 對象,累積下來這個開銷是相當(dāng)大的。
我們完全可以使用 Symbol ,因為對于這些 key 來講,我們用的就是名字而已,例如下面hosts[:beijing]


使用 Symbol 作為 key
               
hosts = {
 :beijing => 'machine1',
 :shanghai => 'machine2',
 :guangzhou => 'machine3',
 :tianjin  => 'machine4',
 :shenzhen => 'machine5'
}

哈希參數(shù)
通常我們定義的函數(shù)的參數(shù)的個數(shù)和順序是寫死的,調(diào)用函數(shù)的時候要確保參數(shù)的個數(shù)、順序匹配,有時候這樣很不方便,使用哈希參數(shù)可以解決這個問題。
ROR 中就大量地運(yùn)用這種方式,也許你已經(jīng)看到了,到處都是 Symbol 和哈希。比如:

使用哈希參數(shù)的方法調(diào)用
               
link_to 'Show', :action => 'show', :id => product

add_column :products, :price, :decimal,
:precision => 8, :scale => 2, :default => 0

使用哈希參數(shù)的方法可以如下定義,前半部分為固定參數(shù),后面為可變參數(shù),或者干脆全采用哈希參數(shù):

哈希參數(shù)
               
def my_method(para1, …, options={})
#your code
end

def my_method(options={})
#your code
end

如果你希望設(shè)定一些默認(rèn)參數(shù),并允許調(diào)用者更改這些參數(shù),可以使用哈希對象的 merge! 方法
hsh.merge!( other_hash )。該方法將 other_hash 里內(nèi)容加到 hsh 中,如果other_hash 與 hsh 有重復(fù)的 key ,則 key 在 other_hash 中的 value 覆蓋 hsh 中對應(yīng) key 的 value 。

方法定義-使用默認(rèn)參數(shù)
               
class Test
def my_method(opts={})
  default_opts={:arg1 => 10, :arg2 => "abc"}
  default_opts.merge!(opts)
  default_opts.each{|key,value| puts "#{key} is #{value}"}
end
end

t = Test.new
t.my_method :arg1=>5, :arg3=>"def"


運(yùn)行結(jié)果
               
arg1 is 5
arg2 is abc
arg3 is def

原文:
http://www.ibm.com/developerworks/cn/opensource/os-cn-rubysbl/

論壇徽章:
30
水瓶座
日期:2014-08-22 21:06:3415-16賽季CBA聯(lián)賽之新疆
日期:2015-12-19 19:05:48IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:3315-16賽季CBA聯(lián)賽之上海
日期:2016-04-15 19:51:31程序設(shè)計版塊每日發(fā)帖之星
日期:2016-04-17 06:23:29程序設(shè)計版塊每日發(fā)帖之星
日期:2016-04-23 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-26 06:20:00每日論壇發(fā)貼之星
日期:2016-05-26 06:20:0015-16賽季CBA聯(lián)賽之遼寧
日期:2017-02-16 23:59:4715-16賽季CBA聯(lián)賽之天津
日期:2019-01-11 01:11:44
2 [報告]
發(fā)表于 2013-07-19 21:33 |只看該作者
就是啊當(dāng)用string的時候想一下,是不是可以。。。

論壇徽章:
30
水瓶座
日期:2014-08-22 21:06:3415-16賽季CBA聯(lián)賽之新疆
日期:2015-12-19 19:05:48IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-12-25 06:20:3315-16賽季CBA聯(lián)賽之上海
日期:2016-04-15 19:51:31程序設(shè)計版塊每日發(fā)帖之星
日期:2016-04-17 06:23:29程序設(shè)計版塊每日發(fā)帖之星
日期:2016-04-23 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-26 06:20:00每日論壇發(fā)貼之星
日期:2016-05-26 06:20:0015-16賽季CBA聯(lián)賽之遼寧
日期:2017-02-16 23:59:4715-16賽季CBA聯(lián)賽之天津
日期:2019-01-11 01:11:44
3 [報告]
發(fā)表于 2013-07-19 21:34 |只看該作者
因為在ruby里都是對象,
  1. puts xxx.methods.count
復(fù)制代碼
你就知道你創(chuàng)造了多少

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
4 [報告]
發(fā)表于 2013-07-20 04:42 |只看該作者
想一下。。。

論壇徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
5 [報告]
發(fā)表于 2013-07-21 11:12 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午馬
日期:2014-08-06 03:56:58
6 [報告]
發(fā)表于 2013-07-26 15:07 |只看該作者
嗯,Ruby高手這個問題。

論壇徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午馬
日期:2014-08-06 03:56:58
7 [報告]
發(fā)表于 2013-08-06 11:55 |只看該作者
shijiang1130 發(fā)表于 2013-07-19 14:31
使用 Symbol
正如前邊提到的, Ruby 內(nèi)部一直在使用 Symbol ,比如 Ruby 程序中的各種名字,Symbol本質(zhì)上是  .. ....這點我們在下一篇文章中會看到。 ...

看看下一篇

論壇徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
8 [報告]
發(fā)表于 2013-08-06 19:02 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
9 [報告]
發(fā)表于 2013-08-09 03:44 |只看該作者
Sevk 發(fā)表于 2013-08-06 15:02
還好,原本需要100MB跑起來的程序,優(yōu)化后80MB就可以跑了。
謝謝大神,不好意思是怎么優(yōu)化呢?

論壇徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
10 [報告]
發(fā)表于 2013-08-09 12:24 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP