我的Go+语言初体验——语法验证/性能测试篇(直男程序员的真实体验2)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 我的Go+语言初体验——语法验证/性能测试篇(直男程序员的真实体验)

Go+完整测试代码


package main
import (
  "container/list"
  "fmt"
  "strconv"
  //"github.com/goplus/tutorial/14-Using-goplus-in-Go/foo"
  "math/rand"
  "sort"
  "time"
)
func test1() {
  start := time.Now().UnixMicro()
  num := 10
  for i := 0; i < 1000000; i++ {
    fmt.Sprintf("%d", num)
  }
  end := time.Now().UnixMicro()
  fmt.Printf("格式转换操作 :%d us\n", end-start)
}
func test2() {
  start := time.Now().UnixMicro()
  num := 0
  for i := 0; i < 1000000; i++ {
    num = num + rand.Intn(200)
  }
  fmt.Println(num)
  end := time.Now().UnixMicro()
  fmt.Printf("循环操作 :%d us\n", end-start)
}
func test3() {
  total_arr := []int{}
  for i := 0; i < 1000000; i++ {
    total_arr = append(total_arr, rand.Int())
  }
  start := time.Now().UnixMicro()
  sort.Ints(total_arr)
  end := time.Now().UnixMicro()
  fmt.Printf("排序操作 :%d us\n", end-start)
}
//func test4() {
//  rmap := foo.ReverseMap(map[string]int{"Hi": 1, "Hello": 2})
//  fmt.Println(rmap)
//}
func test5() {
  total_arr := []int{}
  for i := 0; i < 1000000; i++ {
    total_arr = append(total_arr, rand.Intn(100))
  }
  fmt.Println(total_arr.Len())
  start := time.Now().UnixMicro()
  result_lis := [x*x for x <- total_arr]
  end := time.Now().UnixMicro()
  fmt.Printf("列表语法操作 :%d us\n", end-start)
  fmt.Println(result_lis.Len())
}
func test6() {
  old_map := map[string]int{}
  for i := 0; i < 1000000; i++ {
    old_map["test"+strconv.Itoa(i)] = i
  }
  start := time.Now().UnixMicro()
  reversedMap := {v: k for k, v <- old_map}
  end := time.Now().UnixMicro()
  fmt.Printf("map操作 :%d us\n", end-start)
  fmt.Println(len(reversedMap))
}
func main() {
  // test1()
  // test2()
  // test3()
  //test4()
  // test5()
  test6()
}

Go语言完整代码

package main
import (
  "fmt"
  "strconv"
  //"github.com/goplus/tutorial/14-Using-goplus-in-Go/foo"
  "math/rand"
  "sort"
  "time"
)
func test1() {
  start := time.Now().UnixMicro()
  num := 10
  for i := 0; i < 1000000; i++ {
    fmt.Sprintf("%d", num)
  }
  end := time.Now().UnixMicro()
  fmt.Printf("格式转换操作 :%d us\n", end-start)
}
func test2() {
  start := time.Now().UnixMicro()
  num := 0
  for i := 0; i < 1000000; i++ {
    num = num + rand.Intn(100)
  }
  fmt.Println(num)
  end := time.Now().UnixMicro()
  fmt.Printf("循环操作 :%d us\n", end-start)
}
func test3() {
  total_arr := []int{}
  for i := 0; i < 1000000; i++ {
    total_arr = append(total_arr, rand.Int())
  }
  start := time.Now().UnixMicro()
  sort.Ints(total_arr)
  end := time.Now().UnixMicro()
  fmt.Printf("排序操作 :%d us\n", end-start)
}
//func test4() {
//  rmap := foo.ReverseMap(map[string]int{"Hi": 1, "Hello": 2})
//  fmt.Println(rmap)
//}
func test5() {
  total_arr := []int{}
  for i := 0; i < 1000000; i++ {
    total_arr = append(total_arr, rand.Intn(100))
  }
  fmt.Println(len(total_arr))
  start := time.Now().UnixMicro()
  result_arr := []int{}
  for _, value := range total_arr {
    result_arr = append(result_arr, value*value)
  }
  end := time.Now().UnixMicro()
  fmt.Printf("列表语法操作 :%d us\n", end-start)
  fmt.Println(len(result_arr))
}
func test6() {
  old_map := map[string]int{}
  for i := 0; i < 1000000; i++ {
    old_map["test"+strconv.Itoa(i)] = i
  }
  start := time.Now().UnixMicro()
  invMap := make(map[int]string, len(old_map))
  for k, v := range old_map {
    invMap[v] = k
  }
  end := time.Now().UnixMicro()
  fmt.Printf("map操作 :%d us\n", end-start)
  fmt.Println(len(invMap))
}
func main() {
  //test1()
  //test2()
  //test3()
  //test4()
  //test5()
  test6()
}

总结

目前测试的几个优化Go语言的语法,在使用中还是简化了许多的,只是代码性能还是有些许损耗的,但是不是很大。而Go语言代码在Go+中的使用性能基本没有损耗。其中还是要指出几个问题。


1)官网给出的可以在Go中直接使用Go+在github上的远程仓库代码进行直接编译,无法使用。经过和Go+团队的沟通,应该是给出的测试包已经迁移走了,无法使用。我本次测试没来得及上传Github自己的Go+包,所以无法评价是否可用。


2)关于Map的相关操作还有一定的优化空间。


如果本文对你有用的话,点个赞吧,谢谢!


相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
1月前
|
程序员 Go PHP
为什么大部分的 PHP 程序员转不了 Go 语言?
【9月更文挑战第8天】大部分 PHP 程序员难以转向 Go 语言,主要因为:一、编程习惯与思维方式差异,如语法风格和编程范式;二、学习成本高,需掌握新知识体系且面临项目压力;三、职业发展考量,现有技能价值及市场需求不确定性。学习新语言虽有挑战,但对拓宽职业道路至关重要。
75 10
|
1月前
|
数据采集 运维 测试技术
软件测试之道 -- 做一个有匠心的程序员!
作者一年前围绕设计模式与代码重构写了一篇《代码整洁之道 -- 告别码农,做一个有思想的程序员!》的文章。本文作为续篇,从测试角度谈程序员对软件质量的追求。
|
1月前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
45 10
|
11天前
|
Java 编译器 Go
Go to Learn Go之基础语法
Go to Learn Go之基础语法
12 0
|
2月前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
2月前
|
算法 安全 测试技术
Go - 常用签名算法的基准测试
Go - 常用签名算法的基准测试
25 2
|
3月前
|
运维 监控 测试技术
Golang质量生态建设问题之接入并使用Go单元测试插件的问题如何解决
Golang质量生态建设问题之接入并使用Go单元测试插件的问题如何解决
|
2月前
|
JSON 测试技术 Go
Go 单元测试完全指南(一)- 基本测试流程
Go 单元测试完全指南(一)- 基本测试流程
14 0
|
3月前
|
测试技术 Shell Go
Golang质量生态建设问题之Go语言的单元测试的问题如何解决
Golang质量生态建设问题之Go语言的单元测试的问题如何解决
|
4月前
|
编译器 Go 开发者