• 习近平会见蒙古国总统巴特图勒嘎 2019-06-26
  • 别让“屈原留下三天端午假”的段子再流传 2019-06-19
  • 爱国神曲《厉害了我的国》爆红网络 2019-06-19
  • 美国依据“301”调查发布对中国产品征收关税清单 2019-06-07
  • 沈阳举办首届锡伯族泥巴节 2019-06-04
  • 宪法修正案专题记者会 2019-06-04
  • “00后”登场、加分政策收紧 今年高考有这些新特征! 2019-05-30
  • 《脉动的中医》推广健康新理念 让中医回归自然 2019-05-27
  • 述评:美国应当记取历史教训 2019-05-27
  • 中国现在看谁脸色行使啦?哈~ 2019-05-23
  • 中国保险行业协会发布汽车后市场配件合车标准 2019-05-13
  • 世界献血者日 近距离接触一袋合格血的成长历程 2019-05-13
  • 加强网约车事中事后联合监管 2019-04-24
  • 广东警方摧毁全国首例“呼死你”专案犯罪团伙 2019-04-24
  • 旅游市场再创佳绩端午假期河北接待游客2026.77万 揽金147.79亿 2019-04-20
  • 综合技术

    湖南快乐十分总动员app:[原]压力测试

    湖南快乐十分每天期数 www.91zhb.com 微信扫一扫,分享到朋友圈

    [原]压力测试
    0

    版权声明:本文为博主尹成联系QQ77025077,微信18510341407原创文章,欢迎转载侵权不究。 https://blog.csdn.net/yincheng01/article/details/84136139

    压力测试概述

    压力测试用来检测函数(方法)的性能,和编写单元功能测试的方法类似,但需要注意以下几点:

    • 文件名命名规则:xxx_test.go
    • 函数名命名规则:func BenchXxx(b *testing.B),其中XXX可以是任意字母数字的组合,但是首字母不能是小写字母
    • 函数内必须使用b.N进行轮询测试
    • 函数内可以选择使用b.ReportAllocs()汇报内存开销
    • 在GoLandIDE中你可以在待测包上右键,Run->gobentch xxx,以执行整包的压力测试,默认从上向下依次执行所有
    • 终端执行当前包下的所有压力测试:
    go test -bench=.
    • 终端执行多次求平均值
    go test -bench=. -count=3

    定义待测的工具函数

    这里给出了斐波那契数列的递归和非递归两种算法实现

    //获取斐波那契数列第n项的递归实现
    //1,1,2,3,5,8,13,21,34,55
    func GetFibonacci1(n int) int {
    	if n == 0 || n == 1 {
    		return 1
    	} else {
    		return GetFibonacci1(n-1) + GetFibonacci1(n-2)
    	}
    }
    
    //获取斐波那契数列第n项的非递归实现
    //1,1,2,3,5,8,13,21,34,55
    func GetFibonacci2(n int) int {
    	x, y := 1, 1
    	for i := 0; i < n; i++ {
    		x, y = y, x+y
    	}
    	return x
    }

    定义测试用例

    //导入测试工具包
    import "testing"
    
    //测试用例1:多次测试函数GetFibonacci1,获得平均执行时间
    func BenchmarkGetFibonacci1(b *testing.B) {
    	b.Log("BenchmarkGetFibonacci1")
    	
    	//汇报内存开销
    	b.ReportAllocs()
    	for i := 0; i < b.N; i++ {
    		GetFibonacci1(10)
    	}
    }
    
    //测试用例2:多次测试函数GetFibonacci2,获得平均执行时间
    func BenchmarkGetFibonacci2(b *testing.B) {
    	b.Log("BenchmarkGetFibonacci2")
    	
    	//汇报内存开销
    	b.ReportAllocs()
    	for i := 0; i < b.N; i++ {
    		GetFibonacci2(10)
    	}
    }

    执行结果

    不难看出,算法2的执行效率6.55纳秒/次要远远优于算法1的503纳秒/次

    定义待测试的结构体

    //导入包
    import (
    	"encoding/json"
    	"os"
    	"fmt"
    )
    
    //定义待测的结构体
    type Student struct {
    	Name string
    	Age  int
    }
    
    //将当前对象存入JSON文件
    func (s *Student) Save() error {
    	dstFile, _ := os.OpenFile("d:/temp/student.json", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
    	defer dstFile.Close()
    
    	//fmt.Println("Save:s=",s)
    	encoder := json.NewEncoder(dstFile)
    	err := encoder.Encode(s)
    	if err != nil {
    		fmt.Println("保存失败,err=", err)
    		return err
    	}
    
    	//fmt.Println("保存成功!")
    	return nil
    }
    
    //读取JSON文件,转化为一个student对象,加载的结果存入s中
    func (s *Student) Load() error {
    	srcFile, _ := os.OpenFile("d:/temp/student.json", os.O_RDONLY, 0666)
    	defer srcFile.Close()
    	decoder := json.NewDecoder(srcFile)
    	err := decoder.Decode(s)
    	if err != nil {
    		fmt.Println("加载失败,err=", err)
    		return err
    	}
    
    	//fmt.Println("加载成功!")
    	return nil
    }

    定义结构体函数的性能测试用例

    //导入测试工具包
    import "testing"
    
    //测试用例1:多次测试学生的保存方法,获得平均执行时间
    func BenchmarkStudentSave(b *testing.B) {
    	b.Log("BenchmarkStudentSave")
    	
    	//汇报内存开销
    	b.ReportAllocs()
    	for i := 0; i < b.N; i++ {
    		student := &Student{"张全蛋", 20}
    		student.Save()
    	}
    }
    
    //测试用例2:多次测试学生的加载方法,获得平均执行时间
    func BenchmarkStudentLoad(b *testing.B) {
    	b.Log("BenchmarkStudentLoad")
    	
    	//汇报内存开销
    	b.ReportAllocs()
    	for i := 0; i < b.N; i++ {
    		student := &Student{}
    		student.Load()
    	}
    }

    执行效果

    学院Go语言视频主页

    https://edu.csdn.net/lecturer/1928

    [清华团队带你实战区块链开发]

    ( https://ke.qq.com/course/344443?tuin=3d17195d
    )

    扫码获取海量视频及源码 QQ群:

    721929980

    阅读原文...


    YinCheng的博客

    专访云穹智能庄慎:技术与空间融合是必然趋势

    上一篇

    谷歌Photos网页版获更新:采用与软件版配对的新Material UI

    下一篇

    评论已经被关闭。

    插入图片

    热门分类

    往期推荐

    [原]压力测试

    长按储存图像,分享给朋友

  • 习近平会见蒙古国总统巴特图勒嘎 2019-06-26
  • 别让“屈原留下三天端午假”的段子再流传 2019-06-19
  • 爱国神曲《厉害了我的国》爆红网络 2019-06-19
  • 美国依据“301”调查发布对中国产品征收关税清单 2019-06-07
  • 沈阳举办首届锡伯族泥巴节 2019-06-04
  • 宪法修正案专题记者会 2019-06-04
  • “00后”登场、加分政策收紧 今年高考有这些新特征! 2019-05-30
  • 《脉动的中医》推广健康新理念 让中医回归自然 2019-05-27
  • 述评:美国应当记取历史教训 2019-05-27
  • 中国现在看谁脸色行使啦?哈~ 2019-05-23
  • 中国保险行业协会发布汽车后市场配件合车标准 2019-05-13
  • 世界献血者日 近距离接触一袋合格血的成长历程 2019-05-13
  • 加强网约车事中事后联合监管 2019-04-24
  • 广东警方摧毁全国首例“呼死你”专案犯罪团伙 2019-04-24
  • 旅游市场再创佳绩端午假期河北接待游客2026.77万 揽金147.79亿 2019-04-20
  • 重庆幸运农场网上怎么投注 中国足彩网波胆 吉林时时彩走势图 手机十三水 3d和尾走势图彩吧助手 14104期足彩4场进球 山西11选5走势图top 北京pk10哪年开始的 体彩p3试机号208 赛马会花纹素材 山西十一选五投注 另版曾道人玄机 26选5怎么看中奖了 31选7复试计算 海南体彩中心官方网站