[原]Perl和Python的比較(主要是效能比較) - 程式人生
文章推薦指數: 80 %
Python語法簡單,而且通過縮排的方式來表現層次結構,程式碼非常簡明易懂,對初學者來說,比較容易上手。
Perl的模式匹配非常強大,同時匹配的符號有很多種,難以閱讀和維護 ...
程式人生>python教程>[原]Perl和Python的比較(主要是效能比較)
[原]Perl和Python的比較(主要是效能比較)
•python教程•發佈:2018-10-04
Python語法簡單,而且通過縮排的方式來表現層次結構,程式碼非常簡明易懂,對初學者來說,比較容易上手。
Perl的模式匹配非常強大,同時匹配的符號有很多種,難以閱讀和維護。
在文字處理方面,python通過載入re模組來實現模式匹配的查詢和替換。
而Perl內建就有模式匹配功能。
note:內建命令和外部命令的區別。
通過程式碼來直接做比較。
python版:#!/usr/bin/pythonimportreimportfileinputexists_re=re.compile(r'^(.*?)INFO.*Sucharecordalreadyexists',re.I)location_re=re.compile(r'^AwbLocation(.*?)insertinto',re.I)forlineinfileinput.input():fn=fileinput.filename()currline=line.rstrip()mprev=exists_re.search(currline)if(mprev):xlogtime=mprev.group(1)mcurr=location_re.search(currline)if(mcurr):printfn,xlogtime,mcurr.group(1)
Perl版:#!/usr/bin/perlwhile(<>){chomp;if(m/^(.*?)INFO.*Sucharecordalreadyexists/i){$xlogtime=$1;}if(m/^AwbLocation(.*?)insertinto/i){print"$ARGV$xlogtime$1/n";}}
timeprocess_file.py*log>summarypy.log
real0m8.185s
user0m8.018s
sys0m0.092s
timeprocess_file.pl*log>summaypl.log
real0m1.481s
user0m1.294s
sys0m0.124s在文字處理方面,Perl比Python快8倍左右。
所以在處理大檔案如大日誌方面,用perl更好,因為更快。
如果對速度要求不是很嚴格的話,用python更好,因為python簡潔易懂,容易維護和閱讀。
為什麼在文字處理時,Perl比Python快很多呢?
這是因為Perl的模式匹配是其內建功能,而Python需要載入re模組,使用內建命令比外部命令要快很多。
內建命令和外部命令的區別
Linux命令有內建命令和外部命令之分,功能基本相同,但是呼叫有些細微差別。
內建命令實際上是shell程式的一部分,其中包含的是一些簡單的linux系統命令,這些命令在shell程式識別並在shell程式內部完成執行,通常在linux系統載入執行時shell就被載入並駐留在系統記憶體中。
內部命令是設在bash原始碼裡面的,其執行速度比外部命令快,因為解析內部命令shell不需要建立子程序,比如exit,cd,pwd,echo,history等。
外部命令是linux系統中的實用應用程式,因為實用程式的功能通常比較強大,其包含的程式量也很大,在系統載入的時候並不隨系統一起被載入到記憶體中,而是在需要的時候才將其調入記憶體。
通常外部命令的實體並不包含在shell中,但是其命令執行過程是由shell程式控制的。
shell程式管理外部命令執行的路徑查詢,載入存放,並控制命令的執行。
外部命令是在bash之外額外安裝的,通常放在/bin,/usr/bin,/sbin,/usr/sbin,....等。
用type命令可以分辨內部命令與外部命令。
Python標準庫urllib2的使用和獲取網站狀態舉例
«上一篇
遞迴與分治之棋盤覆蓋問題下一篇»
相關推薦
Python:通過執行100萬次列印來比較C和python的效能,以及用C和python結合來解決效能問題的方法
python作為動態語言,開發效率相當高,但如我們所知,動態語言的執行效率往往是比較低的,請看下面簡單的測試過程:
一...
物件序列化——java原生序列化、Kryo序列化效能比較和Hessian序列化
什麼是序列化以特定的方式對類例項的瞬時狀態進行編碼儲存的一種操作,叫做物件序列化。
就是將物件的這個時刻的各種屬性各種值按照一定...
ArrayList和LinkedList的各項操作效能比較
如果用java編寫程式,我們通常儲存易變...
插入排序的實現與優化並和選擇排序進行效能比較
插入排序
第一種:交換法
|8|6|3|2|10|9|11|4|5...
C#為什麼使用AS和IS運算子及其效能比較
AS和IS對於如何安全的“向下轉型”提供了較好的解...
MySQL使用自增ID主鍵和UUID作為主鍵的優劣比較具體過程(從百萬到千萬表記錄測試)
poputispack方案表數據lock進行argsios
...
python全棧開發【第九篇】Python常用模塊一(主要是re正則和collections)
順序常用模塊內置object簡潔整體re.searchlec快速一、認識模塊
什麽是模塊:一個模塊...
MySQL使用自增ID主鍵和UUID作為主鍵的優劣比較詳細過程(500W單表)
一個開發同事做了一個框架,裡面主鍵是uuid,我跟他建議說mysql不要用uuid用自增主鍵,自增主鍵效率高,他說不一定高...
【songrenqing】部落格主要是為了記錄自己在學習python中遇到的問題,解決問題的方法。
有些問題早就存在,解決問題的方法也有很多,我只是把這些存在的問題和自己經過測試成功的方法,重新記錄下來,便於自己學習和重溫。
部落格主要是為了記錄自己在學習python中遇到的問題,解決問題的方法。
有些問題早就存在,解決問題的方法也有很多,我只是把這些存在的問題和自己經...
Ambari和ClouderaManager主要不同對比
打算對新建的hadoop叢集使用管理工具,列了...
搜尋
基礎教學
WIN技巧
python技巧
linux技巧
mysql技巧
php技巧
Html教程
JS教程
java教程
net教程
IOS教程
最近訪問
[原]Perl和Python的比較(主要是效能比較)
OpenWRT的包依賴+package+DEPEND
iOS打包證書配置最詳細的教程(新手必看)
機器學習——二分-kMeans演算法(二分-K均值聚類演算法)
select判斷連線超時-來著gsoap
Angular+Material+vs.+Material+Design+Lite
MySQL密碼忘了怎麼辦?MySQL重置root密碼方法
Proxysql-1.3.3-學習筆記4:ProxySQL_Main_init_phase2___not_started
MySQL儲存引擎的實際操作步驟
ios+載入xib遇到的坑
延伸文章資訊
- 1學Perl還是Python? - GetIt01
以Script語言比較,. 我覺得兩個都很好用,. 以Linux管理來說,. 推薦加強Shell Script ...
- 2Perl和Python的比較(主要是性能比較) - 台部落
Python語法簡單,而且通過縮進的方式來表現層次結構,代碼非常簡明易懂,對初學者來說,比較容易上手。 Perl的模式匹配非常強大,同時匹配的符號有 ...
- 3Perl 和Python 的比较【转】 - 阿里云开发者社区
Perl 和Python 的比较【转】 ... Perl 的标量不支持下标运算,但是Python 的字符串可以Python 中你可以很方便的用下标索引字符串(而且和Perl 中的列表一样也支持用...
- 4Perl和Python之间有什么区别?Perl与Python的简单比较_ ...
Perl和Python都是一种通用的高级编程语言,都是OO(面向对象)的;那么它们之间有什么区别?下面本篇文章就来给大家简单比较一下Perl和Python, ...
- 5Fw: [問題] python or perl? - 看板Soft_Job - 批踢踢實業坊
作者: bunby (Bunby) 看板: Python 標題: [問題] python or perl? ... 上的需求會接觸到程式目前考慮python 與perl兩種語言爬文比較如下pyt...