• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            qinzuoyan

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              8 Posts :: 0 Stories :: 16 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(3)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            最近因為使用Ruby寫一個多線程爬蟲,所以積累了一點小心得:

            1、多使用Benchmark測試效率,以尋找高效的實現(xiàn),尤其是對于頻繁執(zhí)行的代碼。Ruby執(zhí)行的效率本身比較慢,所以代碼選擇很重要。
             1 require 'benchmark'
             2 
             3 = 100000
             4 Benchmark.bm { |x|
             5   x.report("gsub") { 
             6     for i in 1..n
             7       a = "abcd\nef" * 10
             8       b = a.gsub(/\n/," ")
             9     end 
            10   }
            11   x.report("  tr") {
            12     for i in 1..n
            13       a = "a\"bcd\nef" * 10
            14       b = a.tr("\n"," ")
            15     end  
            16   }
            17 }

            上面執(zhí)行結果:
                  user     system      total        real
            gsub  2.312000   0.109000   2.421000 (  2.438000)
              tr  0.656000   0.000000   0.656000 (  0.672000)
            兩者效率相差近四倍。

            2、關于字符串連接,盡量使用"<<",而不是"+=",因為兩者效率相差巨大。
             1 require 'benchmark'
             2 
             3 Benchmark.bm { |b|
             4   b.report("+= ") {
             5     a = ""
             6     100000.times { a += "foo" }
             7   }
             8   b.report("<< ") {
             9     a = ""
            10     100000.times { a << "foo" }
            11   }
            12 }

            執(zhí)行結果:
                  user     system      total        real
            +=  22.390000   9.750000  32.140000 ( 35.671000)
            <<   0.094000   0.000000   0.094000 (  0.094000)

            3、注意Ruby的異常類層次:
            Exception
                
            * fatal
                
            * NoMemoryError
                
            * ScriptError
                      o LoadError
                      o NotImplementedError
                      o SyntaxError
                
            * SignalException
                      o Interrupt
                
            * StandardError
                      o ArgumentError
                      o IOError
                            
            + EOFError
                      o IndexError
                      o LocalJumpError
                      o NameError
                            
            + NoMethodError
                      o RangeError
                            
            + FloatDomainError
                      o RegexpError
                      o RuntimeError
                      o SecurityError
                      o SystemCallError
                      o ThreadError
                      o TypeError
                      o ZeroDivisionError
                
            * SystemExit
                
            * SystemStackError
            使用 rescue 捕捉異常時,如果沒有指定捕捉的異常類型,則默認為StandardError。(If you write a rescue clause with no parameter list, the parameter defaults to StandardError.——參見Programming Ruby
            這點需要特別注意,因為我們往往習慣性假設它會捕捉所有異常。譬如Net::HTTP獲取頁面如果超時會拋出Timeout::Error異常,其為Interrupt的子類,所以不能被無參的 rescue 捕獲。我就在這上面栽過跟頭。

            4、這里有一些非常好的參考資料:
              Ruby-Doc.org —— Ruby文檔的權威網(wǎng)站
              Programming Ruby —— Ruby權威的文檔
              Ruby Class and Library Reference —— 很方便的常見類的參考
              Ruby QuickRef —— 快速索引,查各種符號和用法很方便
              Ruby User's Guide —— Ruby各方面精簡介紹,入門不錯
              PLEAC Ruby —— Ruby的Cookbook
              Ruby Example Code —— 簡單直觀的樣例代碼,Ruby的HelloWorld
              Ruby Essentials
             
            posted on 2009-08-11 00:09 左言 閱讀(365) 評論(0)  編輯 收藏 引用
            色狠狠久久AV五月综合| 91精品久久久久久无码| 国产精品久久久久乳精品爆| 奇米影视7777久久精品| 国内精品久久九九国产精品| 久久WWW免费人成—看片| 久久人人爽人人爽人人片AV麻烦 | 一本色综合网久久| 精品久久久久久国产| 久久人人爽人人爽人人av东京热 | 久久精品国产清自在天天线| 麻豆AV一区二区三区久久| 久久精品成人免费国产片小草| 7777久久久国产精品消防器材| 国产成人精品久久亚洲高清不卡| 亚洲а∨天堂久久精品9966| 潮喷大喷水系列无码久久精品 | 国产精品美女久久久久AV福利| 国产激情久久久久久熟女老人 | 久久不见久久见免费影院www日本| 香蕉久久永久视频| 中文字幕亚洲综合久久| 精品久久久久久无码中文字幕一区| 欧美午夜A∨大片久久| 91精品国产综合久久香蕉| 久久精品国产亚洲av水果派| 人妻无码精品久久亚瑟影视 | 国产成人精品久久一区二区三区av | 88久久精品无码一区二区毛片 | 日韩欧美亚洲综合久久| 亚洲精品无码专区久久同性男| 久久亚洲精品中文字幕三区| 狠狠色丁香婷婷综合久久来| 精品久久久久久亚洲精品| 欧美综合天天夜夜久久| 久久人人爽人人爽人人片AV不| 午夜精品久久影院蜜桃| 亚洲精品综合久久| 青青热久久国产久精品 | 午夜久久久久久禁播电影| 欧美一区二区久久精品|