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的相关操作还有一定的优化空间。
如果本文对你有用的话,点个赞吧,谢谢!