[Perl] Words Separating

  • Words Separating
  • 有看過筆者[C/C++] Word Separating都知道文字處理如果要完全自行實做,那將會是...(嘔吐到死),在之前文章裡我刻意不用strtok()函式來自行實做單字分離,並且使用了linked-list型態以及相關的排序來完成,所以整體在撰寫上自然就有一定的複雜度存在。如果同樣的問題交給Perl來寫又會是怎樣的情形,程式碼如下:

    Download:sepWord.pl

    不要懷疑,程式碼就只有這樣,不到30行的Perl相當於上次寫了200多行的C,執行效率如何我們來測試一下。

    ### Perl : sepWord.pl ###

    #time ./sepWord.pl text PLspText 0

    real 0m0.018s

    user 0m0.008s

    sys 0m0.004s


    ### C: sepWord ###

    #time ./sepWord text CspText 0

    real 0m0.004s

    user 0m0.000s

    sys 0m0.004s

    在粗略的測試比較之下,這一類的程式比較結果是C語言比Perl快四倍,實際的效能差距僅供參考,因為這兩個語言筆者我並未對他們做最佳化,例如C語言的排序部份,編譯最佳化以及Perl的正規表示法部份都未用到最佳的狀態,但唯一可以確定的是,對一般的程式設計師而言,同樣的功能程式,用C可以換取較好的效能,用Perl可以減少較多的開發時間,究竟哪一個好,各取所需啦!

No comments:

Post a Comment

Orange - data analysis tool

Installation pip install orange3 Run orange python -m Orange.canvas