亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2014年06月30日 15:44:30   投稿:hebedich  
以前寫過批量修改繁體文件名為簡(jiǎn)體的Ruby腳本 ,可惜腳本的性能很有問題,批量重命名時(shí)運(yùn)行速度非常慢。這次準(zhǔn)備優(yōu)化下代碼,提升腳本的執(zhí)行效率。

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

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

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

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

整體時(shí)間的總和

實(shí)際時(shí)間的總和

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

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

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

方法名

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

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

相關(guān)文章

  • Ruby中的字符串編寫示例

    Ruby中的字符串編寫示例

    這篇文章主要介紹了Ruby中的字符串編寫示例,作者給出了相關(guān)編程風(fēng)格的一些建議,需要的朋友可以參考下
    2015-08-08
  • Ruby基礎(chǔ)知識(shí)之類

    Ruby基礎(chǔ)知識(shí)之類

    這篇文章主要介紹了Ruby基礎(chǔ)知識(shí)之類,本文講解了類的創(chuàng)建、訪問器、類變量、常量、類方法、方法的訪問性、工廠方法、模塊module等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 編寫Ruby腳本來對(duì)Twitter用戶的數(shù)據(jù)進(jìn)行深度挖掘

    編寫Ruby腳本來對(duì)Twitter用戶的數(shù)據(jù)進(jìn)行深度挖掘

    這篇文章主要介紹了編寫Ruby腳本來對(duì)Twitter用戶的數(shù)據(jù)進(jìn)行深度挖掘的一些例子,通過調(diào)用Twitter API來實(shí)現(xiàn)各種功能(內(nèi)地注意墻),需要的朋友可以參考下
    2015-11-11
  • Ruby中遍歷目錄的簡(jiǎn)潔方法

    Ruby中遍歷目錄的簡(jiǎn)潔方法

    這篇文章主要介紹了Ruby中遍歷目錄的簡(jiǎn)潔方法,本文分享了一個(gè)復(fù)雜方法和一個(gè)簡(jiǎn)潔方法,需要的朋友可以參考下
    2015-01-01
  • Ruby中實(shí)現(xiàn)把字符串轉(zhuǎn)換為類的2種方法

    Ruby中實(shí)現(xiàn)把字符串轉(zhuǎn)換為類的2種方法

    這篇文章主要介紹了Ruby中實(shí)現(xiàn)把字符串轉(zhuǎn)換為類的2種方法,其中一種是rails提供的方法,需要的朋友可以參考下
    2014-10-10
  • Ruby下WebDriver的相關(guān)操作指南

    Ruby下WebDriver的相關(guān)操作指南

    這篇文章主要介紹了Ruby下WebDriver的相關(guān)操作指南,同時(shí)也介紹了啟動(dòng)firefox drive加載firebug擴(kuò)展的方法,需要的朋友可以參考下
    2015-07-07
  • Ruby on Rails網(wǎng)站項(xiàng)目構(gòu)建簡(jiǎn)單指南

    Ruby on Rails網(wǎng)站項(xiàng)目構(gòu)建簡(jiǎn)單指南

    Rails項(xiàng)目通過Ruby世界中的gem和rake工具來構(gòu)建起來真的相當(dāng)方便,這里就給大家整理了一份Ruby on Rails網(wǎng)站項(xiàng)目構(gòu)建簡(jiǎn)單指南,需要的朋友可以參考下
    2016-06-06
  • Ruby編寫HTML腳本替換小程序的實(shí)例分享

    Ruby編寫HTML腳本替換小程序的實(shí)例分享

    這篇文章主要介紹了Ruby編寫HTML腳本替換小程序的實(shí)例分享,單純使用Ruby中的字符串替換方法而沒有涉及更復(fù)雜的正則表達(dá)式,需要的朋友可以參考下
    2016-05-05
  • 初步了解一下什么是ruby

    初步了解一下什么是ruby

    了解下什么是ruby,希望學(xué)習(xí)ruby的朋友了解下
    2008-06-06
  • ruby實(shí)現(xiàn)github第三方認(rèn)證

    ruby實(shí)現(xiàn)github第三方認(rèn)證

    GitHub在用戶認(rèn)證過程中采用了雙匙機(jī)制,在雙匙加密機(jī)制中,只有合法用戶才擁有私匙,只要GitHub在收到請(qǐng)求時(shí)可以證明提交請(qǐng)求的客戶端上擁有該私匙,即可以確認(rèn)該操作是由合法用戶發(fā)起的。我們通過ruby來簡(jiǎn)單模擬下吧。
    2015-06-06

最新評(píng)論