Go语言 并发测试

测试Go语言的并发性能,利用之前写的接入数据库的代码,实现1000条、10000条数据的更新

插入数据 update_sql.go:

package main

import(
	"fmt"
	"database/sql"
	_ "github.com/lib/pq" 
)
var quit chan int = make(chan int)

func checkErr(err error){
	if err != nil{
		fmt.Println(err)
	}
}

func main(){
	db,err := sql.Open("postgres","host=localhost port=5432 database= test user=sean password=123")
	checkErr(err)
	for i:=0; i<10000;i++{
		stmt,err := db.Prepare("insert into try values($1,1)")
		checkErr(err)
		stmt.Exec(i+1)
	}
	db.Close()

}

不使用并发 original.go

package main

import(
	"fmt"
	"database/sql"
	_ "github.com/lib/pq" 
	"time"
)
var quit chan int = make(chan int)
func checkErr(err error){
	if err != nil{
		fmt.Println(err)
	}
}

func get_data(id int,db *sql.DB){
	
	rows,err := db.Query("select * from try where ida%4 = $1",id)
	checkErr(err)
	for rows.Next(){
		var IDa int
		var IDb int
		err = rows.Scan(&IDa,&IDb)
		checkErr(err)
		if IDb == 1{
			//fmt.Println(IDa," ")
			stmt,err := db.Prepare("update try set idb = 0 where ida = $1")
			checkErr(err)
			stmt.Exec(IDa)
		}
	}
}

func closed(db *sql.DB){
	db.Close()
	fmt.Println(time.Now())
}
func main(){
	db,err := sql.Open("postgres","host=localhost port=5432 database= test user=sean password=123")
	checkErr(err)
	fmt.Println(time.Now())
	get_data(0,db)
	get_data(1,db)
	get_data(2,db)
	get_data(3,db)
	defer closed(db)
}

使用并发 parallel.go:

package main

impo
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值