Python是一種非常高級的編程語言。它的類型是面向對象和腳本語言。與C或C等編程語言相比,其性能和效率會有一些不足。當然,不要以為Python的效率很高。更糟糕的是,只要有正確的代碼規范,就可以達到預期的性能。
代碼優化原則:
1.不要過早優化。優化的前提是代碼可以正常工作。過早優化可能會忽略對整體性能指標的把握。在獲得整體結果之前不要顛倒優先級。
2.優化是有代價的。幾乎不可能解決所有的性能問題。通常的選擇是時間換空間或空間換時間。
3.不要優化那些不相關的部分。如果對代碼的每一部分都進行優化,這些修改會使代碼難以閱讀和理解。如果你的代碼運行緩慢,首先要找到代碼運行緩慢的地方,一般在內循環,重點優化慢的地方。在其他地方,稍微耽誤一點時間是沒有效果的。
避免全局變量:
很多程序員一開始都會用Python寫一些簡單的腳本。寫腳本的時候,一般都是直接把它們寫成全局變量,比如上面的代碼。但是,由于全局變量和局部變量的實現方式不同,全局作用域中定義的代碼會比函數中定義的代碼運行得慢很多。通過將腳本語句放入函數中,通常可以帶來大約15%-30%的速度提升。
循環優化:使用for循環代替while循環,或者使用隱式for循環代替顯式for循環,以減少內部for循環的計算。
選擇合適的數據結構:
例如,Python的內置數據結構類似于C中的數據結構,它是一個動態數組。它會預先分配一定數量的內存空間。當預先分配的內存空間用完,你繼續往里面添加元素時,它會申請更大的內存空間,然后把原來的元素全部復制下來,然后銷毀之前的內存空間,再插入新的元素。
刪除元素時的操作類似,當使用的內存空間小于預分配內存空間的一半時,會再申請一個小內存,做一個元素拷貝,之后會破壞原來的大內存空間。因此,如果添加和刪除操作頻繁,并且新增和刪除的元素數量較多,則列表效率不高,這時候就應該考慮使用了。它是一個雙端隊列,同時具有棧和隊列的特性,可以在兩端進行O(1)復雜度的插入和刪除操作。