一文中,我們討論了Go在單線程計算性能上的優勢。
現在,考慮這樣的一種場景:
我們需要從某些網址中同步數據并進行計算,保存到本地redis緩存中。
現在,我們可以通過編寫Go Worker的方式,將計算和保存的過程保存在本地的redis緩存中,然后使用Celery來調度這些任務。
問題在于,從這些網址中獲取數據的步驟,寫在Go Worker里是否合適?Go進行網絡請求是否比Python更穩定、速度更快?今天我們就來簡單地比較一下。
1.同步比較
首先,試試Go語言請求百度,獲得這個請求和拿到回應之間的時間差:
結果如下:
可以看到,平均耗時在250ms左右。
然后測試Python的requests模塊請求網站:
結果如下:
平均約220ms,似乎在單個請求的情況下,Python略勝一籌。
但是單個請求的比較是沒有意義的,因為這個差異可以忽略不計。
重點還是在下面并發請求的比較上。
2.并發比較
現在,我們試試用Go語言并發請求10次百度:
效果如下:
平均消耗在300ms左右,和單次請求差不多,速度還是相當快的。
接下來試試Python的并發請求,值得注意的是,這里沒有用requests模板,因為 requests模塊是同步的 ,這一點一定要注意。
因此在這里需要使用aiohttp進行并發請求:
測試結果如下:
可以看到,平均耗時在500ms左右,在并發的時候,其速度相比于Go略遜一籌。
3.總結
可以看到,Python在單個請求的時候(使用requests模塊)速度比Go稍微快一丟丟,但是這樣的區別幾乎可以忽略不計。
在并發10次請求的情況下,Go平均耗時300ms,而Python平均耗時500ms,Go略勝一籌。
-
緩存
+關注
關注
1文章
241瀏覽量
26757 -
Go
+關注
關注
0文章
43瀏覽量
12270 -
Redis
+關注
關注
0文章
378瀏覽量
10943 -
單線程
+關注
關注
0文章
17瀏覽量
1788
發布評論請先 登錄
相關推薦
單線程SRAM靜態內存使用
一種單線程編程思路簡析
python多線程和多進程對比
多線程好還是單線程好?單線程和多線程的區別 優缺點分析
從I/O的阻塞與非阻塞、I/O處理的單線程與多線程角度探討服務器模型
Intel處理器占據CPU單線程性能前17位 酷睿i9-9900KS仍穩居榜首
![Intel處理器占據CPU<b class='flag-5'>單線程</b><b class='flag-5'>性能</b>前17位 酷睿i9-9900KS仍穩居榜首](https://file.elecfans.com/web1/M00/B9/9D/o4YBAF6OwtqAYiotAABKIDCY7yI092.png)
這款16核怪物在單線程和多線程性能方面均躍居主流處理器榜首
單線程也能開發異步任務?ACE JS框架到底是如何做到的
![<b class='flag-5'>單線程</b>也能開發異步任務?ACE JS框架到底是如何做到的](https://file.elecfans.com//web2/M00/0F/D0/pYYBAGEWOIyATdaWAADtwa2aYQQ444.png)
Redis為何選擇單線程
單線程是否會引起 fail-fast機制
![<b class='flag-5'>單線程</b>是否會引起 fail-fast機制](https://file1.elecfans.com/web2/M00/A9/58/wKgZomUlCweAW2OYAABg7ZtZ0qw538.jpg)
redis多線程還能保證線程安全嗎
Linux性能基準測試工具選擇與測試策略
![Linux<b class='flag-5'>性能</b>基準測試工具選擇與測試策略](https://file1.elecfans.com/web2/M00/DC/3A/wKgaomYrZW-ARFKpAAA8m9OqCak643.png)
評論