• <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)  編輯 收藏 引用
            久久久无码人妻精品无码| 久久亚洲国产最新网站| jizzjizz国产精品久久| 日本三级久久网| 无码乱码观看精品久久| 亚洲精品高清国产一线久久 | 久久精品国产一区二区三区| 国产精品美女久久福利网站| 国产亚洲精久久久久久无码| 欧美日韩精品久久免费| 中文字幕成人精品久久不卡| 亚洲AV无码久久精品色欲| 久久久久国产视频电影| 国产精品视频久久| 无码日韩人妻精品久久蜜桃 | 国产亚洲欧美成人久久片| 色婷婷久久综合中文久久一本| 久久发布国产伦子伦精品 | 狠狠色婷婷综合天天久久丁香 | 色综合久久中文色婷婷| 天天爽天天狠久久久综合麻豆| 久久婷婷五月综合成人D啪| 久久亚洲综合色一区二区三区| 97精品国产97久久久久久免费| 久久综合久久性久99毛片| 亚洲狠狠综合久久| 久久国产一区二区| 99久久精品午夜一区二区 | 久久精品国产一区二区三区 | 久久精品国产亚洲Aⅴ蜜臀色欲| 精品综合久久久久久97超人| 韩国免费A级毛片久久| 久久天天躁狠狠躁夜夜躁2O2O | 69SEX久久精品国产麻豆| 久久精品九九亚洲精品| 人妻少妇久久中文字幕一区二区| 色综合久久无码中文字幕| 久久婷婷五月综合97色 | 亚洲综合久久夜AV | 超级碰碰碰碰97久久久久| 97久久婷婷五月综合色d啪蜜芽 |