最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python字符串通過(guò)'+'和join函數(shù)拼接新字符串的性能測(cè)試比較

 更新時(shí)間:2019年03月05日 09:36:54   作者:杰瑞26  
今天小編就為大家分享一篇關(guān)于Python字符串通過(guò)'+'和join函數(shù)拼接新字符串的性能測(cè)試比較,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

有一道Python面試題, 以下代碼有什么局限性,要如何修改

def strTest(num):
  s = 'Hello'
  for i in range(num):
    s += 'x'
  return s

上面的代碼其實(shí)可以看出:由于變量str是不變對(duì)象,每次遍歷,Python都會(huì)生成新的str對(duì)象來(lái)存儲(chǔ)新的字符串,所以num越大,創(chuàng)建的str對(duì)象就越多,內(nèi)存消耗約大,速度越慢,性能越差。 如果要改變上面的問(wèn)題,可以變字符串拼接為join聯(lián)合的方式,代碼如下:

def strTest2(num):
  s = 'Hello'
  l = list(s)
  for i in range(num):
    l.append('x')
  return ''.join(l)

下面兩種不同處理方式,運(yùn)行速度的比較:

>>> def strTest1(num):
...   s = 'Hello'
...   for i in range(num):
...     s += 'x'
...   return s
>>> def strTest2(num):
...   s = 'Hello'
...   l = list(s)
...   for i in range(num):
...     l.append(s)
...   return ''.join(l)
>>>
>>> from timeit import timeit
# 運(yùn)行10萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(100000)", setup="from __main__ import strTest1", number=1)
0.016680980406363233
>>> timeit("strTest2(100000)", setup="from __main__ import strTest2", number=1)
0.009688869110618725
# 運(yùn)行100萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(1000000)", setup="from __main__ import strTest1", number=1)
0.14558920607187195
>>> timeit("strTest2(1000000)", setup="from __main__ import strTest2", number=1)
0.1335057276853462
# 運(yùn)行1000萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(10000000)", setup="from __main__ import strTest1", number=1)
5.9497953107860475
>>> timeit("strTest2(10000000)", setup="from __main__ import strTest2", number=1)
1.3268972136649921
# 運(yùn)行2000萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(20000000)", setup="from __main__ import strTest1", number=1)
21.661270140499056
>>> timeit("strTest2(20000000)", setup="from __main__ import strTest2", number=1)
2.6981786518920217
# 運(yùn)行3000萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(30000000)", setup="from __main__ import strTest1", number=1)
49.858089123966295
>>> timeit("strTest2(30000000)", setup="from __main__ import strTest2", number=1)
4.285787770209481
# 運(yùn)行4000萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(40000000)", setup="from __main__ import strTest1", number=1)
86.67876273457563
>>> timeit("strTest2(40000000)", setup="from __main__ import strTest2", number=1)
5.328653452047092
# 運(yùn)行5000萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(50000000)", setup="from __main__ import strTest1", number=1)
130.59138063819023
>>> timeit("strTest2(50000000)", setup="from __main__ import strTest2", number=1)
6.8375931077291625
# 運(yùn)行6000萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(60000000)", setup="from __main__ import strTest1", number=1)
188.28227241975003
>>> timeit("strTest2(60000000)", setup="from __main__ import strTest2", number=1)
8.080144489401846
# 運(yùn)行7000萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(70000000)", setup="from __main__ import strTest1", number=1)
256.54383904350277
>>> timeit("strTest2(70000000)", setup="from __main__ import strTest2", number=1)
9.387400816458012
# 運(yùn)行8000萬(wàn)級(jí)別數(shù)據(jù),運(yùn)行速度比對(duì)
>>> timeit("strTest1(80000000)", setup="from __main__ import strTest1", number=1)
333.7185806572388
>>> timeit("strTest2(80000000)", setup="from __main__ import strTest2", number=1)
10.946627677462857

從上面的比對(duì)數(shù)據(jù)可以看出,當(dāng)數(shù)據(jù)比較小的時(shí)候,兩者差別不大,當(dāng)數(shù)據(jù)越大,兩者性能差距就越大。從而可以看出,字符串拼接的方式一旦碰到大數(shù)據(jù)處理的時(shí)候,性能是非常慢的。 

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • python Tkinter實(shí)時(shí)顯示數(shù)據(jù)功能實(shí)現(xiàn)

    python Tkinter實(shí)時(shí)顯示數(shù)據(jù)功能實(shí)現(xiàn)

    這篇文章主要介紹了python Tkinter實(shí)時(shí)顯示數(shù)據(jù)功能實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 基于plt.title無(wú)法顯示中文的快速解決

    基于plt.title無(wú)法顯示中文的快速解決

    這篇文章主要介紹了基于plt.title無(wú)法顯示中文的快速解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python3連接Mysql8.0遇到的問(wèn)題及處理步驟

    Python3連接Mysql8.0遇到的問(wèn)題及處理步驟

    最近在使用Python開(kāi)發(fā)系統(tǒng),需連接mysql數(shù)據(jù)庫(kù),我用的是Python3連接MySQL8.0,其中老是報(bào)錯(cuò),怎么解決這個(gè)問(wèn)題呢,下面小編給大家?guī)?lái)了Python3連接Mysql8.0遇到的問(wèn)題及處理步驟,需要的朋友參考下吧
    2020-02-02
  • Python文件基本操作實(shí)用指南

    Python文件基本操作實(shí)用指南

    這篇文章主要給大家介紹了Python文件基本操作的相關(guān)資料,其中包括打開(kāi)文件的方式、按行讀取文件內(nèi)容、復(fù)制文件、重命名文件等操作需要的朋友可以參考下
    2021-05-05
  • python連接mongodb密碼認(rèn)證實(shí)例

    python連接mongodb密碼認(rèn)證實(shí)例

    今天小編就為大家分享一篇python連接mongodb密碼認(rèn)證實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python 數(shù)據(jù)處理庫(kù) pandas進(jìn)階教程

    Python 數(shù)據(jù)處理庫(kù) pandas進(jìn)階教程

    在前面一篇文章中,我們對(duì)pandas做了一些入門介紹。本文是它的進(jìn)階篇。在這篇文章中,我們會(huì)講解一些更深入的知識(shí)
    2018-04-04
  • Python?pyecharts實(shí)時(shí)畫(huà)圖自定義可視化經(jīng)緯度熱力圖

    Python?pyecharts實(shí)時(shí)畫(huà)圖自定義可視化經(jīng)緯度熱力圖

    這篇文章主要為大家介紹了Python?pyecharts實(shí)時(shí)畫(huà)圖自定義經(jīng)緯度熱力圖實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 高性能web服務(wù)器框架Tornado簡(jiǎn)單實(shí)現(xiàn)restful接口及開(kāi)發(fā)實(shí)例

    高性能web服務(wù)器框架Tornado簡(jiǎn)單實(shí)現(xiàn)restful接口及開(kāi)發(fā)實(shí)例

    Tornado和現(xiàn)在的主流Web服務(wù)器框架(包括大多數(shù)Python的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其 非阻塞的方式和對(duì)epoll的運(yùn)用,Tornado每秒可以處理數(shù)以千計(jì)的連接,這意味著對(duì)于實(shí)時(shí)Web服務(wù)來(lái)說(shuō),Tornado是一個(gè)理想的Web框架。
    2014-07-07
  • Flask-SocketIO服務(wù)端安裝及使用代碼示例

    Flask-SocketIO服務(wù)端安裝及使用代碼示例

    這篇文章主要介紹了Flask-SocketIO服務(wù)端安裝及使用代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python安裝完成后可以進(jìn)行的后續(xù)步驟和注意事項(xiàng)小結(jié)

    python安裝完成后可以進(jìn)行的后續(xù)步驟和注意事項(xiàng)小結(jié)

    本文詳細(xì)介紹了安裝Python3后的后續(xù)步驟,包括驗(yàn)證安裝、配置環(huán)境、安裝包、創(chuàng)建和運(yùn)行腳本,以及使用虛擬環(huán)境,還強(qiáng)調(diào)了注意事項(xiàng),如系統(tǒng)更新、包管理與安全,感興趣的朋友一起看看吧
    2025-01-01

最新評(píng)論

始兴县| 台中市| 抚州市| 承德县| 保康县| 北辰区| 米泉市| 台北市| 西昌市| 古浪县| 洛南县| 临高县| 青州市| 塘沽区| 乳源| 工布江达县| 扶余县| 巴林左旗| 广宗县| 军事| 宜君县| 温州市| 体育| 诸城市| 美姑县| 中卫市| 龙川县| 调兵山市| 精河县| 延庆县| 义马市| 馆陶县| 随州市| 勐海县| 当涂县| 通渭县| 新兴县| 博乐市| 无极县| 保康县| 民县|