Python的用途越來越廣泛,很受歡迎,必然因為其有很多優點,但是Python也擁有壹大缺點,相比於C語言,
Python運行效率低,那麽是什麽原因導致的呢?
1. python是動態語言
動態語言是壹類在運行時可以改變其結構的語言,如新的函數、對象、代碼可以被引入,已有的函數可以被刪除或其他結構上的變化等,該類語言更具有活性,但是不可避免的因為運行時的不確定性也影響運行效率。
2. python是解釋執行
相比於C語言編譯性語言編寫的程序,Python是解釋執行語言,其運行過程是Python運行文件程序時,Python解釋器將源代碼轉換為字節碼,然後再由Python解釋器來執行這些字節碼。其每次運行都要進行轉換成字節碼,然後再有虛擬機把字節碼轉換成機器語言,最後才能在硬件上運行,與編譯性語言相比,其過程更復雜,性能肯定會受影響。
3. Python中壹切都是對象
Python是壹門面向對象的編程語言,其設計理念是壹切皆是對象,如數字、字符串、元組、列表、字典、函數、方法、類、模塊等都是對象,包括代碼,每個對象都需要維護引用計數,因此,增加了額外工作,影響了性能。
4. Python GIL
GIL是Python最為詬病的壹點,因為GIL,Python中的多線程並不能真正的並發,即使在單線程,GIL也會帶來很大的性能影響,因為python每執行100個opcode就會嘗試線程的切換,因此,影響Python運行效率。
5. 垃圾回收
Python采用標記和分代的垃圾回收策略,每次垃圾回收的時候都會中斷正在執行的程序,造成所謂的頓卡,影響運行效率。