go為什么比php性能好,剛學 GO,擼了個支付寶發券的程序,為什么性能還比不上 PHP ?...

下面是主程代碼,這是詳細代碼

func main() {

//解析參數

filePath := flag.String("f", "", "文件路徑")

tplId := flag.String("t", "", "模版 ID")

flag.Parse()

//解析密鑰

pk, err := ParsePrivateKey()

check(err)

//讀取文件

start := time.Now()

csvFile, err := os.Open(*filePath)

check(err)

defer csvFile.Close()

csvReader := csv.NewReader(csvFile)

arr, err := csvReader.ReadAll()

fmt.Println(len(arr))

check(err)

paramsChan := make(chan string, 200)

//統計成功與失敗數量

var mutex = &sync.Mutex{}

successNum := 0

failNum := 0

var wg sync.WaitGroup

go func() {

for _, row := range arr {

wg.Add(1)

go func(row []string) { //通過添加顯式參數,確保當 go 語句執行時,使用當前 row 值(參考 5.6.1 內部匿名函數中獲取循環變量的問題)

defer wg.Done()

params, err := getQuery(row, *tplId, pk)

if err != nil {

fmt.Println(err)

}

paramsChan

}(row)

}

wg.Wait()

close(paramsChan) //安全關閉通道

}()

var wg2 sync.WaitGroup

limit := make(chan bool, 100)

for s := range paramsChan {

wg2.Add(1)

limit

go func(s string) {

defer wg2.Done()

res, err := sendMsg(s)

if err != nil {

fmt.Println(err)

mutex.Lock()

failNum++

mutex.Unlock()

}

if res {

mutex.Lock()

successNum++

mutex.Unlock()

} else {

mutex.Lock()

failNum++

mutex.Unlock()

}

}(s)

}

wg2.Wait()

fmt.Printf("發券成功:%d\n", successNum)

fmt.Printf("發券失敗:%d\n", failNum)

fmt.Printf("%.2fs elapsed\n", time.Since(start).Seconds())

}

現在如果只整理請求參數,讀取 10W 行的 csv 文件,大概耗時 110-120S 左右,耗費內存在 900M 左右。如果加上發送請求的代碼,會因為內存消耗太大,直接被操作系統 KILL。

我用 PHP 開 4 個進程+guzzle 異步請求,處理完 10W 數據耗時在 110S 左右。

性能差這么多,這究竟是我代碼寫的太菜還是因為 PHP 是最好語言?(手動狗頭)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533336.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533336.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533336.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php %3c%3c%3cxml 報錯,代碼審計| APPCMS SQL-XSS-CSRF-SHELL

0x01 背景由若水師傅提供的一個素材,想要復現CNVD上披露的一個APPCMS的漏洞,由CNVD上的描述可以知道存在漏洞的地方是comment.php這個文件,然后就沒有詳細的漏洞信息了,所以就需要分析相應的源碼文件找出存在漏洞的點。借這個素材…

php二進制保存到本地,C# 將二進制字符串保存到本地

C# 將二進制字符串保存到本地#region 將文件保存到本地/// /// 將文件保存到本地/// /// 文件的二進制數據字符串/// 文件名稱,必須帶后綴private void SaveFile(string psContent, string psFileName){byte[] accessory Convert.FromBase64String(psContent);//Sy…

suse 安裝oracle11,Suse11安裝Oracle11gR2

注:以下采用終端XmanagerEnterprise 4中的Xshell連接1、安裝前參數修改vi /etc/security/limits.conf --末尾添加如下oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536vi /etc/sysctl.conf --末尾添加如…

oracle安裝缺少,安裝oracle11g R2 缺少依賴包

最近我在RHEL6.1上安裝oracle11gR2時總是碰見如題說示的錯誤,在網上查了很多資料但都未能解決。網上都說是gcc版本問題或者gcc的包沒有裝全,但沒有給出正確的gcc安裝方法。這里轉載別人的安裝gcc的rpm包的順序及方法,供各位參考:轉…

PHP7數字三角形代碼,倒數字三角

摘要&#xff1a;描述 Description以下的數字倒直角三角形是由二個數確定的&#xff1a;一個數是行數R&#xff0c;1<R<39&#xff0c;另一個是種子數S,1<S<9。S放在左上角&#xff0c;照著樣例輸出文件的樣子&#xff0c;寫一個程序&#xff0c;根據輸入的二個數打…

oracle 超市管理系統,SuperManager 超市賬單管理系統 JSP + Servlet + Oracle Jsp/ 240萬源代碼下載- www.pudn.com...

文件名稱: SuperManager下載 收藏√ [5 4 3 2 1 ]開發工具: Java文件大小: 2144 KB上傳時間: 2015-07-07下載次數: 0詳細說明&#xff1a;超市賬單管理系統JSP Servlet Oracle-超市賬單管理系統JSP Servlet Oracle文件列表(點擊判斷是否您需要的文件&#xff0c;如果是…

oracle組合數據類型,oracle復合數據類型-相關方法

oracle提供了一些內置的函數和方法來操作復合數據類型。一、count 返回集合中的元素的個數declaretype ename_table_type is table of varchar2(20) index by binary_integer ;ename_table ename_table_type ;beginfor i in 1..5 loopename_table(i):a||i ;end loop ;dbms_outp…

hibernate native oracle,hibernate native 主鍵生成策略

前一次做個系統用的oracle數據庫&#xff0c;使用hibernate生成主鍵的策略是SEQUENCE,當時覺得很累&#xff0c;因為不知道怎么的&#xff0c;oraclesequencetrigger怎么也取不到新增數據時的主鍵值。這次就把重點放這里了&#xff0c;同時還有兩個新的問題&#xff0c;1。到底…

export Oracle_sid =asm,單實例下oracle數據庫從文件系統遷移到ASM上

第一步&#xff1a;啟動ASM實例(ASM)[oracleoracle ~]$ export ORACLE_SIDASM[oracleoracle ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.5.0 - Production on Tue Jan 18 13:25:46 2011Copyright (c) 1982, 2010, Oracle. All Rights Reserved.Connected to:Oracle Dat…

linux命令行的操作符,如何在Linux命令行中進行基本的數學運算

原標題&#xff1a;如何在Linux命令行中進行基本的數學運算Linux bash或命令行允許您執行基本和復雜的算術和布爾運算。像expr&#xff0c;jot&#xff0c;bc和factor等命令可以幫助您找到復雜問題的最優數學解決方案。在本文中&#xff0c;我們將描述這些命令并提供示例&#…

在linux關閉的命令,關于關閉Linux計算機的命令操作

關于關閉Linux計算機的命令操作shutdown -h now 立即關機shutdown -r now 立即重啟Linux命令&#xff1a;shutdown功能說明&#xff1a;系統關機指令。語法&#xff1a;shutdown [-efFhknr][-t 秒數][時間][警告信息]補充說明&#xff1a;shutdown指令可以關閉所有程序&#xf…

linux什么用戶什么任務,linux任務里的1 和2是什么意思

輸出學過代碼的小伙伴應該知道STDIN、STDOUT、STDERR通常都是指定輸出通道的&#xff0c;perl里又稱之為句柄那么1代表的就是STDOUT、2代表的是STDERR、jimmy在視頻中會翻譯成1代表的是正確輸出&#xff0c;2代表的是錯誤輸出。其實嚴格上不能這樣去固有化去理解每一個軟件的定…

linux 命令 查詢丟包率,linux測試丟包率的命令 linux查看丟包率命令

關于用ping命令測網絡延遲和丟包率&#xff1f;在工作中&#xff0c;ping命令用于測試網絡是否可以連接。其次是網絡連接的穩定性&#xff0c;也就是所謂的丟包率。延時參數可手動設定&#xff0c;影響因素較多。輸入windows dos并輸入Ping/all以查看所有參數分析和單個示例。L…

linux http連接超時時間設置,Linux 下 HTTP連接超時

將項目部署到現場環境&#xff0c;HTTP請求莫名奇妙的連接超時&#xff0c;通過抓包定位了問題&#xff0c;是請求的IP被禁止掉。其中用到了抓包&#xff0c;將記錄記錄于此。tcpdump host 120.197.89.51 -i any -vvv::06.241085 IP (tos 0x0, ttl , id , offset , flags [DF],…

linux 庫的頭文件安裝在,“找不到jpeg的頭文件或庫文件”在Alpine Linux上安裝枕頭...

我試圖在基于python:alpine的Docker容器中運行Python的Scrapy。它以前是有效的&#xff0c;但現在我想使用Scrapy的Image Pipeline這需要我安裝枕頭。作為一個簡單的例子&#xff0c;我嘗試了以下Dockerfile&#xff1a;FROM python:alpineRUN apk --update add libxml2-dev li…

linux .desktop權限,如何在Ubuntu Xenial Xerus 16.04 Linux Desktop上以root用戶身份登錄

您可能已經注意到&#xff0c;默認情況下&#xff0c;Ubuntu Xenial Xerus 16.04 Linux Desktop不具備以root管理員用戶身份登錄的功能。每次嘗試以root用戶身份在終端上登錄都會導致Login incorrect錯誤信息&#xff1a;。默認的Ubuntu Linux桌面行為的背后原因是&#xff0c;…

DBackup環境部署linux,linux_BackupPC?安裝部署

yum installperl-Compress-Zlib perl-Archive-Zip perl-File-RsyncP perl-XML-RSShttpdyum-y install perl-suidperl mod_perlrpm -ivhbackuppc_community-3.2.0beta0-1.rhel5.noarch.rpm1- 上面安裝會創建backuppc,apache用戶。vi/etc/httpd/conf/httpd.conf修改‘User apache…

linux18配置靜態ip,ubuntu18配置靜態IP地址

xavier NX板子上安裝的事ubuntu18, 簡單記錄一下ubuntu18如何配置靜態IP地址。首先生成一下文件&#xff1a;sudo netplan generate運行這一句的時候如果提示netplan command not found&#xff0c;執行下面的命令sudo apt install netplan.io然后創建文件sudo vim /etc/netpla…

2048游戲c語言linux簡易代碼,C語言實現2048游戲代碼

本文實例為大家分享了C語言實現2048游戲具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下效果圖:使用文本界面的屏幕繪圖庫 ncurses.設計思路:在滿足條件情況下消除方塊允許在游戲主界面(16 宮格)中任意一格輸出數據實現代碼:#include #include #include #include #inc…

linux訪問網站出現443,Linux訪問網站一直出現超時

問題描述&#xff1a;開發java應用時&#xff0c;需要訪問此網站&#xff0c;在windows上一切正常訪問&#xff0c;部署到linux服務器上就出現了訪問超時[rootVM_18_115_centos ~]# wget https://wap.zhengzhoubus.com/buswechat/WifiBusInterface/transfer/line!getLineAll.ac…