Linux + Golang中缓冲区性能不佳

时间:2015-08-29 00:47:41

标签: memory go cpu-usage

我有这段代码

package main
import (
    "bytes"
    "log"
    "net/http"
    "strconv"
    "time"
)

func main() {

    http.HandleFunc("/", Method)
    log.Printf("Server Started")
    log.Fatal(http.ListenAndServe(":8080", nil))

}

func Method(pResponse http.ResponseWriter, pRequest *http.Request) {
    timeInitial := time.Now()
    log.Printf(strconv.Itoa(timeInitial.Nanosecond()),     strconv.FormatFloat(time.Now().Sub(timeInitial).Seconds()*1000, 'f', 2, 64))
    buf := new(bytes.Buffer)
    buf.ReadFrom(pRequest.Body)
    buf.Bytes() 
    log.Printf(strconv.Itoa(timeInitial.Nanosecond()), strconv.FormatFloat(time.Now().Sub(timeInitial).Seconds()*1000, 'f', 2, 64))

}

在这台机器上:

  • 处理器:2 GHz Intel Core i7
  • 内存:8 GB 1600 MHz DDR3
  • OS:Yosemite版本10.10.5

结果如下:

2015/08/28 23:09:59 444255510%!(EXTRA string=0.00)
2015/08/28 23:09:59 444255510%!(EXTRA string=0.06)
2015/08/28 23:09:59 472140004%!(EXTRA string=0.00)
2015/08/28 23:09:59 472140004%!(EXTRA string=1.06)
2015/08/28 23:09:59 473322028%!(EXTRA string=0.00)
2015/08/28 23:09:59 473322028%!(EXTRA string=0.01)
2015/08/28 23:09:59 473377991%!(EXTRA string=0.00)
2015/08/28 23:09:59 473377991%!(EXTRA string=0.02)
2015/08/28 23:09:59 483981504%!(EXTRA string=0.00)
2015/08/28 23:09:59 483981504%!(EXTRA string=0.06)
2015/08/28 23:09:59 487652426%!(EXTRA string=0.00)
2015/08/28 23:09:59 487652426%!(EXTRA string=0.07)
2015/08/28 23:09:59 488064359%!(EXTRA string=0.00)
2015/08/28 23:09:59 488064359%!(EXTRA string=0.07)
2015/08/28 23:09:59 493007447%!(EXTRA string=0.00)
2015/08/28 23:09:59 493007447%!(EXTRA string=0.36)
2015/08/28 23:09:59 506383690%!(EXTRA string=0.00)
2015/08/28 23:09:59 506383690%!(EXTRA string=0.02)
2015/08/28 23:09:59 516324968%!(EXTRA string=0.00)
2015/08/28 23:09:59 516324968%!(EXTRA string=0.02)
2015/08/28 23:09:59 516484292%!(EXTRA string=0.00)
2015/08/28 23:09:59 516484292%!(EXTRA string=0.02)
2015/08/28 23:09:59 526459027%!(EXTRA string=0.00)
2015/08/28 23:09:59 526459027%!(EXTRA string=0.03)
2015/08/28 23:09:59 526568984%!(EXTRA string=0.00)
2015/08/28 23:09:59 526568984%!(EXTRA string=0.02)
2015/08/28 23:09:59 526645341%!(EXTRA string=0.00)
2015/08/28 23:09:59 526645341%!(EXTRA string=0.01)
2015/08/28 23:09:59 533764558%!(EXTRA string=0.00)
2015/08/28 23:09:59 533764558%!(EXTRA string=0.02)
2015/08/28 23:09:59 533872219%!(EXTRA string=0.00)
2015/08/28 23:09:59 533872219%!(EXTRA string=0.02)
2015/08/28 23:09:59 542355931%!(EXTRA string=0.00)
2015/08/28 23:09:59 542355931%!(EXTRA string=0.04)
2015/08/28 23:09:59 549176497%!(EXTRA string=0.00)
2015/08/28 23:09:59 549176497%!(EXTRA string=0.03)
2015/08/28 23:09:59 559803436%!(EXTRA string=0.00)
2015/08/28 23:09:59 559803436%!(EXTRA string=0.05)
2015/08/28 23:09:59 559913211%!(EXTRA string=0.00)
2015/08/28 23:09:59 559913211%!(EXTRA string=0.01)
2015/08/28 23:09:59 579428530%!(EXTRA string=0.00)
2015/08/28 23:09:59 579428530%!(EXTRA string=0.05)
2015/08/28 23:09:59 585453710%!(EXTRA string=0.00)
2015/08/28 23:09:59 585453710%!(EXTRA string=0.03)
2015/08/28 23:09:59 587231793%!(EXTRA string=0.00)
2015/08/28 23:09:59 587231793%!(EXTRA string=0.02)
2015/08/28 23:09:59 601407050%!(EXTRA string=0.00)
2015/08/28 23:09:59 601407050%!(EXTRA string=0.02)
2015/08/28 23:09:59 609160787%!(EXTRA string=0.00)
2015/08/28 23:09:59 609160787%!(EXTRA string=0.02)
2015/08/28 23:09:59 617953845%!(EXTRA string=0.00)
2015/08/28 23:09:59 617953845%!(EXTRA string=0.03)
2015/08/28 23:09:59 618042591%!(EXTRA string=0.00)
2015/08/28 23:09:59 618042591%!(EXTRA string=0.02)
2015/08/28 23:09:59 629055567%!(EXTRA string=0.00)
2015/08/28 23:09:59 629055567%!(EXTRA string=0.03)
2015/08/28 23:09:59 642409323%!(EXTRA string=0.00)
2015/08/28 23:09:59 642409323%!(EXTRA string=0.02)
2015/08/28 23:09:59 668017861%!(EXTRA string=0.00)
2015/08/28 23:09:59 668017861%!(EXTRA string=0.12)
2015/08/28 23:09:59 677003700%!(EXTRA string=0.00)
2015/08/28 23:09:59 677003700%!(EXTRA string=0.06)
2015/08/28 23:09:59 692284984%!(EXTRA string=0.00)
2015/08/28 23:09:59 692284984%!(EXTRA string=0.03)
2015/08/28 23:09:59 705532147%!(EXTRA string=0.00)
2015/08/28 23:09:59 705532147%!(EXTRA string=0.06)
2015/08/28 23:09:59 712790204%!(EXTRA string=0.00)
2015/08/28 23:09:59 712790204%!(EXTRA string=0.12)
2015/08/28 23:09:59 737197885%!(EXTRA string=0.00)
2015/08/28 23:09:59 737197885%!(EXTRA string=0.07)
2015/08/28 23:09:59 743503323%!(EXTRA string=0.00)
2015/08/28 23:09:59 743503323%!(EXTRA string=0.14)
2015/08/28 23:09:59 745206360%!(EXTRA string=0.00)
2015/08/28 23:09:59 745206360%!(EXTRA string=0.06)
2015/08/28 23:09:59 763185757%!(EXTRA string=0.00)
2015/08/28 23:09:59 763185757%!(EXTRA string=0.55)
2015/08/28 23:09:59 769112727%!(EXTRA string=0.00)
2015/08/28 23:09:59 769112727%!(EXTRA string=0.08)
2015/08/28 23:09:59 805816057%!(EXTRA string=0.00)
2015/08/28 23:09:59 805816057%!(EXTRA string=0.12)
2015/08/28 23:09:59 809677378%!(EXTRA string=0.00)
2015/08/28 23:09:59 809677378%!(EXTRA string=0.08)
2015/08/28 23:09:59 828063305%!(EXTRA string=0.00)
2015/08/28 23:09:59 828063305%!(EXTRA string=0.12)
2015/08/28 23:09:59 828338407%!(EXTRA string=0.00)
2015/08/28 23:09:59 828338407%!(EXTRA string=0.03)
2015/08/28 23:09:59 835510888%!(EXTRA string=0.00)
2015/08/28 23:09:59 835510888%!(EXTRA string=0.07)
2015/08/28 23:09:59 882626159%!(EXTRA string=0.00)
2015/08/28 23:09:59 882626159%!(EXTRA string=0.03)
2015/08/28 23:09:59 897746270%!(EXTRA string=0.00)
2015/08/28 23:09:59 897746270%!(EXTRA string=0.03)
2015/08/28 23:09:59 931674931%!(EXTRA string=0.00)
2015/08/28 23:09:59 931674931%!(EXTRA string=0.03)
2015/08/28 23:09:59 936024259%!(EXTRA string=0.00)
2015/08/28 23:09:59 936024259%!(EXTRA string=0.05)

在另一台机器上:

  • vendor_id:GenuineIntel
    • cpu family:6
    • 型号:63
    • 型号名称:Intel(R)Xeon(R)CPU E5-2630 v3 @ 2.40GHz
  • MemTotal:65845252 kB
  • 操作系统:Linux 3.13.0-32-generic#57-Ubuntu SMP Tue 7月15日03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux

结果就是这个

2015/08/29 01:16:54 471552059%!(EXTRA string=15.81)
2015/08/29 01:16:54 480068871%!(EXTRA string=15.67)
2015/08/29 01:16:54 507398302%!(EXTRA string=0.00)
2015/08/29 01:16:54 521398742%!(EXTRA string=0.00)
2015/08/29 01:16:54 202533461%!(EXTRA string=2327.37)
2015/08/29 01:16:54 338831795%!(EXTRA string=1191.18)
2015/08/29 01:16:54 531039526%!(EXTRA string=1037.30)
2015/08/29 01:16:54 593472114%!(EXTRA string=0.00)
2015/08/29 01:16:54 609973091%!(EXTRA string=0.00)
2015/08/29 01:16:54 593472114%!(EXTRA string=16.54)
2015/08/29 01:16:54 609973091%!(EXTRA string=15.73)
2015/08/29 01:16:54 394071392%!(EXTRA string=1238.16)
2015/08/29 01:16:54 638164663%!(EXTRA string=0.00)
2015/08/29 01:16:54 638164663%!(EXTRA string=15.53)
2015/08/29 01:16:54 667631670%!(EXTRA string=0.00)
2015/08/29 01:16:54 675844627%!(EXTRA string=0.00)
2015/08/29 01:16:54 675844627%!(EXTRA string=14.16)
2015/08/29 01:16:54 711898262%!(EXTRA string=0.00)
2015/08/29 01:16:54 300566416%!(EXTRA string=424.26)
2015/08/29 01:16:54 711898262%!(EXTRA string=13.02)
2015/08/29 01:16:54 632385443%!(EXTRA string=1115.35)
2015/08/29 01:16:54 753118239%!(EXTRA string=0.00)
2015/08/29 01:16:54 753118239%!(EXTRA string=14.15)
2015/08/29 01:16:54 767381818%!(EXTRA string=0.00)
2015/08/29 01:16:54 801314950%!(EXTRA string=0.00)
2015/08/29 01:16:54 767381818%!(EXTRA string=33.99)
2015/08/29 01:16:54 816438476%!(EXTRA string=0.00)
2015/08/29 01:16:54 372179187%!(EXTRA string=2457.93)
2015/08/29 01:16:54 836926824%!(EXTRA string=0.00)
2015/08/29 01:16:54 836926824%!(EXTRA string=51.60)
2015/08/29 01:16:54 889729894%!(EXTRA string=0.00)
2015/08/29 01:16:54 890430388%!(EXTRA string=0.00)
2015/08/29 01:16:54 891713727%!(EXTRA string=0.00)
2015/08/29 01:16:54 732229063%!(EXTRA string=1163.04)
2015/08/29 01:16:54 332690466%!(EXTRA string=1571.52)
2015/08/29 01:16:54 904336456%!(EXTRA string=0.00)
2015/08/29 01:16:54 926288167%!(EXTRA string=0.00)
2015/08/29 01:16:54 384796519%!(EXTRA string=1549.14)
2015/08/29 01:16:54 941601994%!(EXTRA string=0.00)
2015/08/29 01:16:54 431987970%!(EXTRA string=1516.20)
2015/08/29 01:16:54 888973901%!(EXTRA string=1082.22)
2015/08/29 01:16:54 977186277%!(EXTRA string=0.00)
2015/08/29 01:16:54 977186277%!(EXTRA string=0.06)
2015/08/29 01:16:54 977367193%!(EXTRA string=0.00)
2015/08/29 01:16:55 977367193%!(EXTRA string=56.33)
2015/08/29 01:16:55 46374447%!(EXTRA string=0.00)
2015/08/29 01:16:55 46374447%!(EXTRA string=0.28)
2015/08/29 01:16:55 869929721%!(EXTRA string=1176.83)
2015/08/29 01:16:55 46916778%!(EXTRA string=0.00)
2015/08/29 01:16:55 66407207%!(EXTRA string=0.00)
2015/08/29 01:16:55 80231754%!(EXTRA string=0.00)
2015/08/29 01:16:55 66407207%!(EXTRA string=13.88)
2015/08/29 01:16:55 80231754%!(EXTRA string=12.10)
2015/08/29 01:16:55 99556642%!(EXTRA string=0.00)
2015/08/29 01:16:55 105395202%!(EXTRA string=0.00)
2015/08/29 01:16:55 121157010%!(EXTRA string=0.00)
2015/08/29 01:16:55 105395202%!(EXTRA string=15.83)
2015/08/29 01:16:55 121157010%!(EXTRA string=12.82)
2015/08/29 01:16:55 134107839%!(EXTRA string=0.00)
2015/08/29 01:16:55 134107839%!(EXTRA string=15.98)
2015/08/29 01:16:55 162712352%!(EXTRA string=0.00)
2015/08/29 01:16:55 162712352%!(EXTRA string=16.46)
2015/08/29 01:16:55 179288920%!(EXTRA string=0.00)
2015/08/29 01:16:55 194490367%!(EXTRA string=0.00)
2015/08/29 01:16:55 202206415%!(EXTRA string=0.00)
2015/08/29 01:16:55 49113060%!(EXTRA string=1165.79)
2015/08/29 01:16:55 473214551%!(EXTRA string=1760.64)
2015/08/29 01:16:55 239858481%!(EXTRA string=0.00)
2015/08/29 01:16:55 32855481%!(EXTRA string=1213.72)
2015/08/29 01:16:55 56811869%!(EXTRA string=1231.75)
2015/08/29 01:16:55 295414269%!(EXTRA string=0.00)
2015/08/29 01:16:55 295491576%!(EXTRA string=0.00)
2015/08/29 01:16:55 889729894%!(EXTRA string=423.76)
2015/08/29 01:16:55 891713727%!(EXTRA string=427.99)
2015/08/29 01:16:55 121465765%!(EXTRA string=1204.92)
2015/08/29 01:16:55 904336456%!(EXTRA string=428.21)
2015/08/29 01:16:55 121526643%!(EXTRA string=1233.79)
2015/08/29 01:16:55 310004280%!(EXTRA string=1051.71)
2015/08/29 01:16:55 858909173%!(EXTRA string=2502.90)
2015/08/29 01:16:55 367541741%!(EXTRA string=0.00)
2015/08/29 01:16:55 367541741%!(EXTRA string=18.04)
2015/08/29 01:16:55 393589632%!(EXTRA string=0.00)
2015/08/29 01:16:55 407450080%!(EXTRA string=0.00)
2015/08/29 01:16:55 46916778%!(EXTRA string=378.70)
2015/08/29 01:16:55 896338456%!(EXTRA string=1529.38)
2015/08/29 01:16:55 431101598%!(EXTRA string=0.00)
2015/08/29 01:16:55 431101598%!(EXTRA string=8.42)
2015/08/29 01:16:55 462833623%!(EXTRA string=0.00)
2015/08/29 01:16:55 462833623%!(EXTRA string=13.67)
2015/08/29 01:16:55 484103852%!(EXTRA string=0.00)
2015/08/29 01:16:55 492334586%!(EXTRA string=0.00)
2015/08/29 01:16:55 492410130%!(EXTRA string=0.00)
2015/08/29 01:16:55 492334586%!(EXTRA string=13.06)
2015/08/29 01:16:55 511300492%!(EXTRA string=0.00)
2015/08/29 01:16:55 511300492%!(EXTRA string=19.36)
2015/08/29 01:16:55 537223305%!(EXTRA string=0.00)
2015/08/29 01:16:55 544019226%!(EXTRA string=0.00)
2015/08/29 01:16:55 544019226%!(EXTRA string=16.19)
2015/08/29 01:16:55 560322064%!(EXTRA string=0.00)
2015/08/29 01:16:55 993395050%!(EXTRA string=1566.96)
2015/08/29 01:16:55 560322064%!(EXTRA string=39.26)
2015/08/29 01:16:55 599688803%!(EXTRA string=0.00)
2015/08/29 01:16:55 179288920%!(EXTRA string=421.14)
2015/08/29 01:16:55 157717567%!(EXTRA string=1443.31)
2015/08/29 01:16:55 507398302%!(EXTRA string=1093.78)
2015/08/29 01:16:55 609900746%!(EXTRA string=0.00)
2015/08/29 01:16:55 239858481%!(EXTRA string=370.10)
2015/08/29 01:16:55 609900746%!(EXTRA string=14.23)
2015/08/29 01:16:55 993465302%!(EXTRA string=1644.50)
2015/08/29 01:16:55 655129719%!(EXTRA string=0.00)
2015/08/29 01:16:55 66651321%!(EXTRA string=1601.79)
2015/08/29 01:16:55 521398742%!(EXTRA string=1156.10)
2015/08/29 01:16:55 295491576%!(EXTRA string=382.10)
2015/08/29 01:16:55 295414269%!(EXTRA string=389.39)
2015/08/29 01:16:55 702701065%!(EXTRA string=0.00)
2015/08/29 01:16:55 137363675%!(EXTRA string=1574.04)
2015/08/29 01:16:55 393589632%!(EXTRA string=339.33)
2015/08/29 01:16:55 667631670%!(EXTRA string=1071.18)
2015/08/29 01:16:55 407450080%!(EXTRA string=338.06)
2015/08/29 01:16:55 484103852%!(EXTRA string=293.32)
2015/08/29 01:16:55 786006965%!(EXTRA string=0.00)
2015/08/29 01:16:55 801314950%!(EXTRA string=998.25)
2015/08/29 01:16:55 816438476%!(EXTRA string=1008.98)
2015/08/29 01:16:55 848323630%!(EXTRA string=0.00)
2015/08/29 01:16:55 655129719%!(EXTRA string=225.32)
2015/08/29 01:16:55 900971628%!(EXTRA string=0.00)
2015/08/29 01:16:55 702701065%!(EXTRA string=212.15)
2015/08/29 01:16:55 953092419%!(EXTRA string=0.00)
2015/08/29 01:16:56 786006965%!(EXTRA string=225.37)
2015/08/29 01:16:56 848323630%!(EXTRA string=263.25)
2015/08/29 01:16:56 890430388%!(EXTRA string=1221.25)
2015/08/29 01:16:56 99556642%!(EXTRA string=1013.02)
2015/08/29 01:16:56 599688803%!(EXTRA string=513.94)
2015/08/29 01:16:56 900971628%!(EXTRA string=213.58)
2015/08/29 01:16:56 114683782%!(EXTRA string=0.00)
2015/08/29 01:16:56 194490367%!(EXTRA string=926.51)
2015/08/29 01:16:56 941601994%!(EXTRA string=1179.50)
2015/08/29 01:16:56 202206415%!(EXTRA string=944.82)
2015/08/29 01:16:56 953092419%!(EXTRA string=201.68)
2015/08/29 01:16:56 280223380%!(EXTRA string=0.00)
2015/08/29 01:16:56 926288167%!(EXTRA string=1373.12)
2015/08/29 01:16:56 114683782%!(EXTRA string=213.67)
2015/08/29 01:16:56 365730070%!(EXTRA string=0.00)
2015/08/29 01:16:56 537223305%!(EXTRA string=882.31)
2015/08/29 01:16:56 272782462%!(EXTRA string=4147.48)
2015/08/29 01:16:56 632615696%!(EXTRA string=0.00)
2015/08/29 01:16:56 634781232%!(EXTRA string=0.00)
2015/08/29 01:16:56 280223380%!(EXTRA string=360.50)
2015/08/29 01:16:56 365730070%!(EXTRA string=275.11)
2015/08/29 01:16:56 492410130%!(EXTRA string=1354.29)
2015/08/29 01:16:56 632615696%!(EXTRA string=214.78)
2015/08/29 01:16:56 634781232%!(EXTRA string=219.21)
2015/08/29 01:16:57 65374683%!(EXTRA string=0.00)
2015/08/29 01:16:57 65573396%!(EXTRA string=0.00)
2015/08/29 01:16:57 65374683%!(EXTRA string=300.96)
2015/08/29 01:16:57 53842402%!(EXTRA string=5317.02)
2015/08/29 01:16:57 65573396%!(EXTRA string=305.82)
2015/08/29 01:16:58 26171685%!(EXTRA string=10149.46)

在不同机器上生成不同结果的相同代码。结果中的时间以毫秒为单位,您可以看到Linux机器打印表单只需要执行我之前显示的简单代码5秒到10秒,但在mac机器上这不会发生。不幸的是,我的最终产品应该在Linux上,因此执行此代码的时间会影响高性能产品的最终结果。我不知道这个代码在Linux中有什么问题。我会感激任何帮助;目前,我被困住了。

我是如何测试代码的:

通过负载测试,我发送100个线程1分钟,采用简单策略,测试延迟1秒,SoapUI 5.2.0上的随机0.5

请求是这样的:

{
   "Field1":{
      "Key1":"HHHHHH",
      "Key2":"[branch code]",
      "Key3":"HHHHHHtest"
   },
   "Field2":{
      "Key1":"HHH"
   },
   "Field3":{
      "Key1":[
         {
            "Value1":0,
            "Value2":"HHHHHHH",
            "Value3":"HHH"
         },
         {
            "Value1":0,
            "Value2":"HHHH",
            "Value3":"HH"
         },
         {
            "Value1":1,
            "Value2":"HHHHHHHHHHHHH",
            "Value3":""
         },
         {
            "Value1":1,
            "Value2":"HHHHHHHHHHHHHHHHHHH",
            "Value3":"1"
         },
         {
            "Value1":2,
            "Value2":"HHHHHHHHHHHHHHHHHHHH",
            "Value3":"3"
         },
         {
            "Value1":2,
            "Value2":"HHHHHHHH",
            "Value3":"1"
         },
         {
            "Value1":1,
            "Value2":"HHHHHHHHHHHHH",
            "Value3":"4"
         },
         {
            "Value1":2,
            "Value2":"HHHHHHHHHHHH",
            "Value3":"BB"
         }
      ]
   },
   "Field4":{
      "key1":11111111,
      "key2":11111111
   },
   "Field5":{
      "key1":[
         {
            "Value1":1,
            "Value2":2
         },
         {
            "Value1":1,
            "Value2":2
         },
         {
            "Value1":[
               {
                  "Value2":5
               }
            ],
            "Value1":1,
            "Value2":2,
            "children3":1
         }
      ]
   },
   "Field6":"HHH_HHHH_HHHHHHHH_HHHH",
   "Field7":"HHHHHHHHHHHHHH_HHHHH",
   "Field8":"4.1",
   "Field9":"12312312"
}

注意:我从this post知道代码不是最有效的,但我找不到有效的解决方案。

编辑1:使用GODEBUG = gctrace = 1运行代码并转到版本go1.4.2 linux / amd64

http://pastebin.com/jvV8wAz7

编辑2:使用GODEBUG = gctrace = 1运行代码并转到版本go1.5 linux / amd64

http://pastebin.com/sM8TVzXW

0 个答案:

没有答案