成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ruby使用心得匯總:尋找高效的實現

開發 開發工具
本文總結了一些Ruby的使用心得。使用Ruby最需要注意的一點就是效率:因為Ruby執行的效率本身比較慢,所以代碼選擇很重要。

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

51CTO編輯推薦:Ruby入門教程與技巧大全

Ruby使用心得1、多使用Benchmark測試效率,以尋找高效的實現,尤其是對于頻繁執行的代碼。Ruby執行的效率本身比較慢,所以代碼選擇很重要。

  1. require 'benchmark' 
  2.  
  3. n = 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.  

上面執行結果:

  1.       user     system      total        real  
  2. gsub  2.312000   0.109000   2.421000 (  2.438000)  
  3. tr  0.656000   0.000000   0.656000 (  0.672000

兩者效率相差近四倍。

Ruby使用心得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. }  

執行結果:

  1.       user     system      total        real  
  2. +=  22.390000   9.750000  32.140000 ( 35.671000)  
  3. <<   0.094000   0.000000   0.094000 (  0.094000)  

Ruby使用心得3、注意Ruby的異常類層次:

  1. Exception 
  2.     * fatal  
  3.     * NoMemoryError  
  4.     * ScriptError  
  5.           o LoadError  
  6.           o NotImplementedError  
  7.           o SyntaxError  
  8.     * SignalException  
  9.           o Interrupt  
  10.     * StandardError  
  11.           o ArgumentError  
  12.           o IOError  
  13.                 + EOFError  
  14.           o IndexError  
  15.           o LocalJumpError  
  16.           o NameError  
  17.                 + NoMethodError  
  18.           o RangeError  
  19.                 + FloatDomainError  
  20.           o RegexpError  
  21.           o RuntimeError  
  22.           o SecurityError  
  23.           o SystemCallError  
  24.           o ThreadError  
  25.           o TypeError  
  26.           o ZeroDivisionError  
  27.     * SystemExit  
  28.     * 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 捕獲。我就在這上面栽過跟頭。

Ruby使用心得4、這里有一些非常好的參考資料:

Ruby-Doc.org —— Ruby文檔的權威網站

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

【編輯推薦】

  1. Ruby on Rails入門之道
  2. Ruby on Rails 2.3.3發布 主要修復Bug
  3. Ruby on Rails開發的五點建議
  4. 淺談Ruby和JRuby的學習
  5. Web開發誰更高效 Java對決Ruby on Rails
責任編輯:yangsai 來源: 百度空間
相關推薦

2011-01-19 14:57:09

Thunderbird

2009-08-26 13:31:21

JavaScript使

2009-06-19 11:09:27

Spring AOP

2011-01-07 11:14:17

Nginx負載均衡負載均衡

2010-03-02 17:33:49

Android 2.0

2010-02-01 10:15:07

C++ TinyXML

2011-09-01 10:16:43

JQuery Mobi

2009-06-26 16:12:08

ThickboxjQuery

2009-08-28 10:08:15

C# using語句

2009-08-31 10:00:07

C#靜態變量

2020-03-16 08:13:58

SQL性能問題

2011-03-15 11:05:03

2011-04-20 13:59:28

愛普生V100掃描儀

2010-06-01 13:42:37

TortoiseSVN

2010-08-06 11:12:38

FlexCairngorm框架

2009-07-31 18:37:45

ASP.NET MVC

2016-10-07 15:45:59

2022-06-27 19:16:53

Obsidian工具

2010-09-25 10:38:20

vim編輯器

2009-11-25 17:24:42

無線路由器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久www成人免费无遮挡大片 | 国产欧美在线视频 | 天天插天天舔 | 亚洲一区国产 | 国产黄色大片在线免费观看 | 欧美日韩视频在线 | 国内自拍偷拍视频 | 国产在线视频一区二区 | 在线激情视频 | 久久男人| 色婷婷久久久久swag精品 | 亚洲国产精品一区二区久久 | 午夜精品一区二区三区在线视频 | 欧美最猛黑人xxxx黑人 | 欧美日韩在线视频一区 | 免费观看日韩av | 久久av一区 | 超碰97免费在线 | 日日干夜夜操天天操 | 国产一区二区三区免费 | 中文字幕一区二区三 | 欧美精品v国产精品v日韩精品 | 国产99久久精品一区二区300 | jdav视频在线观看免费 | 午夜影视在线观看 | 九九视频网 | 自拍 亚洲 欧美 老师 丝袜 | 免费视频一区二区 | 丝袜一区二区三区 | 国内精品一区二区 | 91av在线电影 | 色婷婷久久久久swag精品 | 久久久久久久久久久久久91 | 欧美a免费 | 国产一区二区日韩 | 在线日韩av电影 | 亚洲综合二区 | 97色综合 | 成人欧美一区二区三区色青冈 | jizz中国日本| 一区二区影院 |