主頁 > 知識庫 > 優(yōu)化Ruby腳本效率實例分享

優(yōu)化Ruby腳本效率實例分享

熱門標(biāo)簽:漯河電銷 AI電銷機器人 線路 外呼線路從哪里出來的 淮安自動外呼系統(tǒng)供應(yīng)商 天津外呼系統(tǒng)怎么收費 巫師3地圖標(biāo)注魔力之所 柯城手機地圖如何做地圖標(biāo)注 征服者企業(yè)地圖標(biāo)注 中牟外呼系統(tǒng)違法嗎

profile.rb是為Ruby程序準(zhǔn)備的profiler,它可以統(tǒng)計并輸出各方法的運行時間,以便于找到程序執(zhí)行的性能瓶頸。這次就用它來剖析腳本的運行時間。使用方法很簡單,加上命令行選項-r profile就可以:

ruby -r profile rename.rb
運行結(jié)束后,會把統(tǒng)計信息輸出到標(biāo)準(zhǔn)錯誤輸出中。如下圖所示:

profile統(tǒng)計的是各方法的運行時間,分為2類。第1種計算的是從方法調(diào)用到方法返回之間的時間,稱為整體時間;第2種則是從整體時間中扣除在該方法中調(diào)用其它方法所耗費時間之后得到的時間,稱為實際時間。輸出信息每行中各字段含義如下(從左到右):

該方法執(zhí)行時間占整體時間的百分比,比例越高越說明這行代碼可能需要優(yōu)化

整體時間的總和

實際時間的總和

被調(diào)用的次數(shù)

每次調(diào)用的平均實際時間(毫秒)

每次調(diào)用的平均整體時間(毫秒)

方法名

由上圖可以看出,腳本執(zhí)行的時間大部分耗在了循環(huán)上。解決方法有兩個:消除循環(huán)或減少循環(huán)次數(shù)。前者很難實現(xiàn),暫且還沒有想到辦法,也許根本就沒有可能。腳本中mapping的大小為2685,所以每修改一個文件名需要執(zhí)行2685次循環(huán),且循環(huán)中的encode和gsub!都是耗時操作。通常文件名的長度不超過30個字符,通過遍歷文件名中每個字符的方式重命名就可以把循環(huán)次數(shù)縮減到不超過30次。

修改代碼后重新執(zhí)行分析命令,得到的結(jié)果是腳本運行時間從379395秒優(yōu)化到2418秒,性能整整提升了156倍,達(dá)到2個數(shù)量級的效果。

您可能感興趣的文章:
  • Ruby On Rails中如何避免N+1問題
  • ruby開發(fā)vim插件小結(jié)
  • 分析Cache 在 Ruby China 里面的應(yīng)用情況
  • Java版的Ruby解釋器 JRuby簡介
  • ruby執(zhí)行周期性任務(wù)的三種gem介紹

標(biāo)簽:甘孜 西雙版納 內(nèi)江 克拉瑪依 大慶 棗莊 河池 南昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《優(yōu)化Ruby腳本效率實例分享》,本文關(guān)鍵詞  優(yōu)化,Ruby,腳本,效率,實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《優(yōu)化Ruby腳本效率實例分享》相關(guān)的同類信息!
  • 本頁收集關(guān)于優(yōu)化Ruby腳本效率實例分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章