麻豆黑色丝袜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
主站蜘蛛池模板: 交换人生电影在线| 欧美日韩国产人成在线观看| 连开二个同学嫩苞视频| 好吊妞788免费视频播放| 狍和女人一级毛片免费的| 欧洲成人r片在线观看| 欧美人与性动交另类| 麻豆三级视频| 在线观看www成人影院| 免费一级毛片在线播放不收费| 日韩精品一区二区三区中文| 巨胸动漫美女被爆羞羞视频| 欧美日韩一区二区成人午夜电影| 男人黄女人色视频在线观看| 日韩精品一区二区三区在线观看l 日韩精品无码一区二区三区 | 夜夜操夜夜爱| 色老头综合免费视频| 草莓视频网站下载| 老婆~我等不及了给我| 国产一区二区三区久久精品| 国产交换配乱吟播放免费| 青草国产在线| 日韩精品资源| 人人爽天天碰天天躁夜夜躁 | 三级七日情| 在线观看中文字幕码| 国产丰满岳乱妇在线观看| 国产欧美精品一区二区三区-老狼| 日产精品卡二卡三卡四卡乱码视频 | 日韩一级黄色片| 天天操夜夜操天天操| 美女把尿口扒开让男人添| 娃娃脸中文字幕1080p| 欧美香蕉在线| 特极毛片| 国产精品99久久久久久www| 哈昂~哈昂够了太多太深小说| 真实处破疼哭视频免费看| 欧美区日韩区| 女人国产香蕉久久精品| 亚洲午夜一区二区三区|