麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 代碼優化從哪些方面考慮?有什么想法?

代碼優化從哪些方面考慮?有什么想法?

來源:千鋒教育
發布人:wjy
時間: 2022-09-13 17:43:23 1663062203

  1、優化算法時間

  算法的時間復雜度對程序的執行效率影響最大,在 Python 中可以通過選擇合適的數據結構來優化時間復雜度,如 list 和 set 查找某一個元素的時間復雜度分別是 O(n)和 O(1)。不同的場景有不同的優化方式,總得來說,一般有分治,分支界限,貪心,動態規劃等思想。

  2、循環優化

  每種編程語言都會強調需要優化循環。當使用 Python 的時候,你可以依靠大量的技巧使得循環運行得更快。然而,開發者經常漏掉的一個方法是:

  避免在一個循環中使用點操作。每一次你調用方法 str.upper,Python 都會求該方法的值。然而,如果你用一個變量代替求得的值,值就變成了已知的,Python 就可以更快地執行任務。優化循環的關鍵,是要減少 Python 在循環內部執行的工作量,因為 Python 原生的解釋器在那種情況下,真的會減緩執行的速度。(注意:優化循環的方法有很多,這只是其中的一個。例如,許多程序員都會說,列表推導是在循環中提高執行速度的最好方式。這里的關鍵是,優化循環是程序取得更高的執行速度的更好方式之一。)

  3、函數選擇

  在循環的時候使用 xrange 而不是 range;使用 xrange 可以節省大量的系統內存,因為 xrange() 在序列中每次調用只產生一個整數元素。而 range()將直接返回完整的元素列表,用于循環時會有不必要的開銷。在 python3 中 xrange 不再存在,里面 range 提供一個可以遍歷任意長度的范圍的 iterator。

代碼優化從哪些方面考慮?有什么想法?

  4、并行編程

  因為 GIL 的存在,Python 很難充分利用多核 CPU 的優勢。但是,可以通過內置的模 multiprocessing 實現下面幾種并行模式:

  多進程:對于 CPU 密集型的程序,可以使用 multiprocessing 的 Process,Pool 等封裝好的類,通過多進程的方式實現并行計算。但是因為進程中的通信成本比較大,對于進程之間需要大量數據交互的程序效率未必有大的提高。

  多線程:對于 IO 密集型的程序,multiprocessing.dummy 模塊使用 multiprocessing 的接口封裝 threading,使得多線程編程也變得非常輕松(比如可以使用 Pool 的 map 接口,簡潔高效)。

  布式:multiprocessing 中的 Managers 類提供了可以在不同進程之共享數據的方式,可以在此基礎上開發出分布式的程序。

  不同的業務場景可以選擇其中的一種或幾種的組合實現程序性能的優化。

  5、使用性能分析工具

  除了上面在 ipython 使用到的 timeit 模塊,還有 cProfile。cProfile 的使用方式也非常簡單:python-mcProfilefilename.py,filename.py 是要運行程序的文件名,可以在標準輸出中看到每一個函數被調用的次數和運行的時間,從而找到程序的性能瓶頸,然后可以有針對性地優化。

  6、set 的用法

  set 的 union,intersection,difference 操作要比 list 的迭代要快。因此如果涉及到求 list 交集,并集或者差的問題可以轉換為 set 來操作。

  7、PyPy

  PyPy 是用 RPython(CPython 的子集)實現的 Python,根據官網的基準測試數據,它比 CPython 實現的 Python 要快 6 倍以上。快的原因是使用了 Just-in-Time(JIT)編譯器,即動態編譯器,與靜態編譯器(如 gcc,javac 等)不同,它是利用程序運行的過程的數據進行優化。由于歷史原因,目前 pypy 中還保留著 GIL,不過正在進行的 STM 項目試圖將 PyPy 變成沒有 GIL 的 Python。如果 python 程序中含有 C 擴展(非 cffi 的方式),JIT 的優化效果會大打折扣,甚至比 CPython 慢(比 Numpy)。

  所以在 PyPy 中最好用純 Python 或使用 cffi 擴展。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 欧美性色欧美a在线播放| 一女多男np疯狂伦交| 两个人看的www视频免费完整版| 日产亚洲一区二区三区| 美国式禁忌矿桥矿17集| 亚洲福利二区| 午夜影院欧美| 国产一区二区三区在线观看免费| 性色a∨人人爽网站| 妞干网免费看| 亚洲精品午夜久久久伊人| 污污动漫在线观看| 国产69久久精品成人看| 小兔子被蛇用两根是什么小说| 精品国产麻豆| 交换年轻夫妇5| 最近最新中文字幕| 天天干天天射天天操| 国产剧果冻传媒星空在线播放| 狠狠色噜噜狠狠狠合久| 乱日视频| 日本私人影院| 快点cao我要被cao烂了| 最近中文字幕高清中文字幕电影二| 97色伦图片| 把英语课代表按在地上c网站| 女人是男人的未来1分29分| 翁虹三级在线伦理电影| 欧美乱大交xxxxx| 老子影院午夜伦手机电影| 亚洲国产精品一区二区九九| 日b视频免费看| 精品一区二区三区免费视频| 羞羞歪歪| 精品久久久久久中文字幕| 中文字幕julia中文字幕| 黄a大片av永久免费| 公交车上性配合享受视频| 超级色的网站观看在线| 一二三四视频在线观看韩国电视剧| 女的张开腿让男人桶爽30分钟 |