1. 首页
  2. 主题
  3. Go问与答

GO初学者问一个循环问题

meiruhua · · 2340 次点击
在本机测试为什么go循环这么慢? 如下代码循环要6-8秒,但是同样的代码写成php只要0.009秒左右,我哪里操作不对吗? GO: ``` func main() { st := time.Now().Unix() str := "" for i := 0; i < 100000; i++ { str += "hello" + strconv.Itoa(i) } fmt.Println(time.Now().Unix() - st) } ``` ![1111111.png](https://static.studygolang.com/210914/803f8c3d44433a226c5c26fb1dc8e218.png) PHP: ``` $t1 = microtime(true); $str = ''; for ($i = 0; $i < 100000; ++$i) { $str .= "hello" . (string)$i; } echo microtime(true) - $t1; ``` ![php.png](https://static.studygolang.com/210914/33e90954198d17f52eea4efb1a22d379.png)
go run test.go 35 ![php53.jpg](https://static.studygolang.com/210915/f227f2a3ae042934ac65b02d21adc802.jpg)
#9
更多评论
st := time.Now().Unix() var buffer bytes.Buffer for i := 0; i &lt; 100000; i++ { buffer.WriteString(&#34;hello&#34; + strconv.Itoa(i)) } fmt.Println(time.Now().Unix() - st) 用bytes.buffer string拼接本身是重新分配了对象,一个字符串是一个不可改变的字节序列 https://studygolang.com/articles/21629 原因看这个
#1
``` st := time.Now().Unix() var buffer bytes.Buffer for i := 0; i &lt; 100000; i++ { buffer.WriteString(&#34;hello&#34; + strconv.Itoa(i)) } fmt.Println(time.Now().Unix() - st) ``` 用bytes.buffer string拼接本身是重新分配了对象,一个字符串是一个不可改变的字节序列 https://studygolang.com/articles/21629 原因看这个
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中