猿问

在 Go 中测量 FLOPS

我想编写一个 go 程序来对我的 CPU 进行基准测试并计算出我的笔记本电脑的 GFLOPS。


func benchmarkFlopTime(){

    num_operations := int(100000000)

    var timeArray[] time.Duration;


    var result float64

    for i:=0; i < num_operations; i++ {

        t1 := time.Now()

        result = 1.0 + 312.232

        elapsed := time.Since(t1)

        timeArray = append(timeArray, elapsed)

        result += 1.0

    }


    fmt.Println("Result (ns):", float64(sumTimeArray(timeArray))/float64(time.Duration(num_operations)))

}

输出 1:结果 (ns):9.99604753ns


解释:

这段代码给了我大约0.1 GFLOPS ((1sec/10ns)/10^-9)。我知道我的 CPU 每个周期可以做 8 次操作,而我只做一次,所以我可以有一个因子 8,假设我有1GFLOPS


问题:

虽然,我的笔记本电脑的 GFLOPS 理论数量为 2.5GHZ i7,8 核,应该是: 8*2.5*8 = 160GFLOPS。我远远低于这个结果。

我确切地说我在编译时不激活优化go install -gcflags '-N -l' github.com/golang/cpu-benchmark。


我们能解释一下这个远低于理论值的值吗?Go 可以测量吗?


泛舟湖上清波郎朗
浏览 171回答 1
1回答

德玛西亚99

这是一个(简单的)Go 基准测试,它对一个循环和二十个浮点运算进行计时。package mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "math"&nbsp; &nbsp; "runtime"&nbsp; &nbsp; "testing"&nbsp; &nbsp; "time")var (&nbsp; &nbsp; f&nbsp; float64&nbsp; &nbsp; e&nbsp; float64 = math.E&nbsp; &nbsp; pi float64 = math.Pi)const nFlop = 20 // benchmarkFloatOpsfunc benchmarkFloatOps(n int) {&nbsp; &nbsp; for i := 0; i < n; i++ {&nbsp; &nbsp; &nbsp; &nbsp; f = pi + e&nbsp; &nbsp; &nbsp; &nbsp; f = pi - e&nbsp; &nbsp; &nbsp; &nbsp; f = pi * e&nbsp; &nbsp; &nbsp; &nbsp; f = pi / e&nbsp; &nbsp; &nbsp; &nbsp; f = pi + e&nbsp; &nbsp; &nbsp; &nbsp; f = pi - e&nbsp; &nbsp; &nbsp; &nbsp; f = pi * e&nbsp; &nbsp; &nbsp; &nbsp; f = pi / e&nbsp; &nbsp; &nbsp; &nbsp; f = pi + e&nbsp; &nbsp; &nbsp; &nbsp; f = pi - e&nbsp; &nbsp; &nbsp; &nbsp; f = pi * e&nbsp; &nbsp; &nbsp; &nbsp; f = pi / e&nbsp; &nbsp; &nbsp; &nbsp; f = pi + e&nbsp; &nbsp; &nbsp; &nbsp; f = pi - e&nbsp; &nbsp; &nbsp; &nbsp; f = pi * e&nbsp; &nbsp; &nbsp; &nbsp; f = pi / e&nbsp; &nbsp; &nbsp; &nbsp; f = pi + e&nbsp; &nbsp; &nbsp; &nbsp; f = pi - e&nbsp; &nbsp; &nbsp; &nbsp; f = pi * e&nbsp; &nbsp; &nbsp; &nbsp; f = pi / e&nbsp; &nbsp; }}func BenchmarkFloatOps(b *testing.B) {&nbsp; &nbsp; benchmarkFloatOps(b.N)}func Results(t time.Duration, n int, nFlop int) {&nbsp; &nbsp; fmt.Println(&nbsp; &nbsp; &nbsp; &nbsp; t, nFlop*n, "ops",&nbsp; &nbsp; &nbsp; &nbsp; float64(t)/float64(time.Duration((nFlop*n))), "ns/op",&nbsp; &nbsp; )}func main() {&nbsp; &nbsp; runtime.GOMAXPROCS(1)&nbsp; &nbsp; // testing benchmark&nbsp; &nbsp; br := testing.Benchmark(BenchmarkFloatOps)&nbsp; &nbsp; Results(br.T, br.N, nFlop)&nbsp; &nbsp; // manual benchmark&nbsp; &nbsp; n := br.N&nbsp; &nbsp; start := time.Now()&nbsp; &nbsp; benchmarkFloatOps(n)&nbsp; &nbsp; end := time.Now()&nbsp; &nbsp; elapsed := end.Sub(start)&nbsp; &nbsp; Results(elapsed, n, nFlop)}输出:Intel i7-6700 CPU 3.40GHz:1.296967371s 4000000000 ops 0.32424184275 ns/op1.299078813s 4000000000 ops 0.32476970325 ns/op转到伪代码benchmarkFloatOps:$ go tool compile -S flops.go"".benchmarkFloatOps t=1 size=592 value=0 args=0x8 locals=0x0&nbsp; &nbsp; 0x0000 00000 (flops.go:19)&nbsp; TEXT&nbsp; &nbsp; "".benchmarkFloatOps(SB), $0-8&nbsp; &nbsp; 0x0000 00000 (flops.go:19)&nbsp; NOP&nbsp; &nbsp; 0x0000 00000 (flops.go:19)&nbsp; NOP&nbsp; &nbsp; 0x0000 00000 (flops.go:19)&nbsp; MOVQ&nbsp; &nbsp; "".n+8(FP), CX&nbsp; &nbsp; 0x0005 00005 (flops.go:19)&nbsp; FUNCDATA&nbsp; &nbsp; $0, gclocals·5184031d3a32a42d85027f073f873668(SB)&nbsp; &nbsp; 0x0005 00005 (flops.go:19)&nbsp; FUNCDATA&nbsp; &nbsp; $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)&nbsp; &nbsp; 0x0005 00005 (flops.go:20)&nbsp; MOVQ&nbsp; &nbsp; $0, AX&nbsp; &nbsp; 0x0007 00007 (flops.go:20)&nbsp; CMPQ&nbsp; &nbsp; AX, CX&nbsp; &nbsp; 0x000a 00010 (flops.go:20)&nbsp; JGE $0, 588&nbsp; &nbsp; 0x0010 00016 (flops.go:21)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0018 00024 (flops.go:21)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0020 00032 (flops.go:21)&nbsp; ADDSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0024 00036 (flops.go:21)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x002c 00044 (flops.go:22)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0034 00052 (flops.go:22)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x003c 00060 (flops.go:22)&nbsp; SUBSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0040 00064 (flops.go:22)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0048 00072 (flops.go:23)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0050 00080 (flops.go:23)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0058 00088 (flops.go:23)&nbsp; MULSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x005c 00092 (flops.go:23)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0064 00100 (flops.go:24)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x006c 00108 (flops.go:24)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0074 00116 (flops.go:24)&nbsp; DIVSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0078 00120 (flops.go:24)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0080 00128 (flops.go:25)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0088 00136 (flops.go:25)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0090 00144 (flops.go:25)&nbsp; ADDSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0094 00148 (flops.go:25)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x009c 00156 (flops.go:26)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x00a4 00164 (flops.go:26)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x00ac 00172 (flops.go:26)&nbsp; SUBSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x00b0 00176 (flops.go:26)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x00b8 00184 (flops.go:27)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x00c0 00192 (flops.go:27)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x00c8 00200 (flops.go:27)&nbsp; MULSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x00cc 00204 (flops.go:27)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x00d4 00212 (flops.go:28)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x00dc 00220 (flops.go:28)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x00e4 00228 (flops.go:28)&nbsp; DIVSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x00e8 00232 (flops.go:28)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x00f0 00240 (flops.go:29)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x00f8 00248 (flops.go:29)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0100 00256 (flops.go:29)&nbsp; ADDSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0104 00260 (flops.go:29)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x010c 00268 (flops.go:30)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0114 00276 (flops.go:30)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x011c 00284 (flops.go:30)&nbsp; SUBSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0120 00288 (flops.go:30)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0128 00296 (flops.go:31)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0130 00304 (flops.go:31)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0138 00312 (flops.go:31)&nbsp; MULSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x013c 00316 (flops.go:31)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0144 00324 (flops.go:32)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x014c 00332 (flops.go:32)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0154 00340 (flops.go:32)&nbsp; DIVSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0158 00344 (flops.go:32)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0160 00352 (flops.go:33)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0168 00360 (flops.go:33)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0170 00368 (flops.go:33)&nbsp; ADDSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0174 00372 (flops.go:33)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x017c 00380 (flops.go:34)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0184 00388 (flops.go:34)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x018c 00396 (flops.go:34)&nbsp; SUBSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0190 00400 (flops.go:34)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0198 00408 (flops.go:35)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x01a0 00416 (flops.go:35)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x01a8 00424 (flops.go:35)&nbsp; MULSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x01ac 00428 (flops.go:35)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x01b4 00436 (flops.go:36)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x01bc 00444 (flops.go:36)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x01c4 00452 (flops.go:36)&nbsp; DIVSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x01c8 00456 (flops.go:36)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x01d0 00464 (flops.go:37)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x01d8 00472 (flops.go:37)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x01e0 00480 (flops.go:37)&nbsp; ADDSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x01e4 00484 (flops.go:37)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x01ec 00492 (flops.go:38)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x01f4 00500 (flops.go:38)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x01fc 00508 (flops.go:38)&nbsp; SUBSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0200 00512 (flops.go:38)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0208 00520 (flops.go:39)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x0210 00528 (flops.go:39)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0218 00536 (flops.go:39)&nbsp; MULSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x021c 00540 (flops.go:39)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0224 00548 (flops.go:40)&nbsp; MOVSD&nbsp; &nbsp;"".pi(SB), X0&nbsp; &nbsp; 0x022c 00556 (flops.go:40)&nbsp; MOVSD&nbsp; &nbsp;"".e(SB), X1&nbsp; &nbsp; 0x0234 00564 (flops.go:40)&nbsp; DIVSD&nbsp; &nbsp;X1, X0&nbsp; &nbsp; 0x0238 00568 (flops.go:40)&nbsp; MOVSD&nbsp; &nbsp;X0, "".f(SB)&nbsp; &nbsp; 0x0240 00576 (flops.go:20)&nbsp; INCQ&nbsp; &nbsp; AX&nbsp; &nbsp; 0x0243 00579 (flops.go:20)&nbsp; NOP&nbsp; &nbsp; 0x0243 00579 (flops.go:20)&nbsp; CMPQ&nbsp; &nbsp; AX, CX&nbsp; &nbsp; 0x0246 00582 (flops.go:20)&nbsp; JLT $0, 16&nbsp; &nbsp; 0x024c 00588 (flops.go:42)&nbsp; RET转到目标代码benchmarkFloatOps:$ go build flops.go && go tool objdump -s benchmarkFloatOps ./flopsTEXT main.benchmarkFloatOps(SB) /home/peter/Dropbox/gopath/src/so/benchmark/flops.go&nbsp; &nbsp; flops.go:19 0x401000&nbsp; &nbsp; 488b4c2408&nbsp; &nbsp; &nbsp; MOVQ 0x8(SP), CX&nbsp; &nbsp; flops.go:20 0x401005&nbsp; &nbsp; 31c0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XORL AX, AX&nbsp; &nbsp; flops.go:20 0x401007&nbsp; &nbsp; 4839c8&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CMPQ CX, AX&nbsp; &nbsp; flops.go:20 0x40100a&nbsp; &nbsp; 0f8d3c020000&nbsp; &nbsp; &nbsp; &nbsp; JGE 0x40124c&nbsp; &nbsp; flops.go:21 0x401010&nbsp; &nbsp; f20f1005e8801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b80e8(IP), X0&nbsp; &nbsp; flops.go:21 0x401018&nbsp; &nbsp; f20f100dd8801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b80d8(IP), X1&nbsp; &nbsp; flops.go:21 0x401020&nbsp; &nbsp; f20f58c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE ADDSD X1, X0&nbsp; &nbsp; flops.go:21 0x401024&nbsp; &nbsp; f20f110544451e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4544(IP)&nbsp; &nbsp; flops.go:22 0x40102c&nbsp; &nbsp; f20f1005cc801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b80cc(IP), X0&nbsp; &nbsp; flops.go:22 0x401034&nbsp; &nbsp; f20f100dbc801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b80bc(IP), X1&nbsp; &nbsp; flops.go:22 0x40103c&nbsp; &nbsp; f20f5cc1&nbsp; &nbsp; &nbsp; &nbsp; REPNE SUBSD X1, X0&nbsp; &nbsp; flops.go:22 0x401040&nbsp; &nbsp; f20f110528451e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4528(IP)&nbsp; &nbsp; flops.go:23 0x401048&nbsp; &nbsp; f20f1005b0801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b80b0(IP), X0&nbsp; &nbsp; flops.go:23 0x401050&nbsp; &nbsp; f20f100da0801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b80a0(IP), X1&nbsp; &nbsp; flops.go:23 0x401058&nbsp; &nbsp; f20f59c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE MULSD X1, X0&nbsp; &nbsp; flops.go:23 0x40105c&nbsp; &nbsp; f20f11050c451e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e450c(IP)&nbsp; &nbsp; flops.go:24 0x401064&nbsp; &nbsp; f20f100594801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8094(IP), X0&nbsp; &nbsp; flops.go:24 0x40106c&nbsp; &nbsp; f20f100d84801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8084(IP), X1&nbsp; &nbsp; flops.go:24 0x401074&nbsp; &nbsp; f20f5ec1&nbsp; &nbsp; &nbsp; &nbsp; REPNE DIVSD X1, X0&nbsp; &nbsp; flops.go:24 0x401078&nbsp; &nbsp; f20f1105f0441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e44f0(IP)&nbsp; &nbsp; flops.go:25 0x401080&nbsp; &nbsp; f20f100578801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8078(IP), X0&nbsp; &nbsp; flops.go:25 0x401088&nbsp; &nbsp; f20f100d68801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8068(IP), X1&nbsp; &nbsp; flops.go:25 0x401090&nbsp; &nbsp; f20f58c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE ADDSD X1, X0&nbsp; &nbsp; flops.go:25 0x401094&nbsp; &nbsp; f20f1105d4441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e44d4(IP)&nbsp; &nbsp; flops.go:26 0x40109c&nbsp; &nbsp; f20f10055c801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b805c(IP), X0&nbsp; &nbsp; flops.go:26 0x4010a4&nbsp; &nbsp; f20f100d4c801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b804c(IP), X1&nbsp; &nbsp; flops.go:26 0x4010ac&nbsp; &nbsp; f20f5cc1&nbsp; &nbsp; &nbsp; &nbsp; REPNE SUBSD X1, X0&nbsp; &nbsp; flops.go:26 0x4010b0&nbsp; &nbsp; f20f1105b8441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e44b8(IP)&nbsp; &nbsp; flops.go:27 0x4010b8&nbsp; &nbsp; f20f100540801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8040(IP), X0&nbsp; &nbsp; flops.go:27 0x4010c0&nbsp; &nbsp; f20f100d30801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8030(IP), X1&nbsp; &nbsp; flops.go:27 0x4010c8&nbsp; &nbsp; f20f59c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE MULSD X1, X0&nbsp; &nbsp; flops.go:27 0x4010cc&nbsp; &nbsp; f20f11059c441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e449c(IP)&nbsp; &nbsp; flops.go:28 0x4010d4&nbsp; &nbsp; f20f100524801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8024(IP), X0&nbsp; &nbsp; flops.go:28 0x4010dc&nbsp; &nbsp; f20f100d14801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8014(IP), X1&nbsp; &nbsp; flops.go:28 0x4010e4&nbsp; &nbsp; f20f5ec1&nbsp; &nbsp; &nbsp; &nbsp; REPNE DIVSD X1, X0&nbsp; &nbsp; flops.go:28 0x4010e8&nbsp; &nbsp; f20f110580441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4480(IP)&nbsp; &nbsp; flops.go:29 0x4010f0&nbsp; &nbsp; f20f100508801b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b8008(IP), X0&nbsp; &nbsp; flops.go:29 0x4010f8&nbsp; &nbsp; f20f100df87f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7ff8(IP), X1&nbsp; &nbsp; flops.go:29 0x401100&nbsp; &nbsp; f20f58c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE ADDSD X1, X0&nbsp; &nbsp; flops.go:29 0x401104&nbsp; &nbsp; f20f110564441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4464(IP)&nbsp; &nbsp; flops.go:30 0x40110c&nbsp; &nbsp; f20f1005ec7f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7fec(IP), X0&nbsp; &nbsp; flops.go:30 0x401114&nbsp; &nbsp; f20f100ddc7f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7fdc(IP), X1&nbsp; &nbsp; flops.go:30 0x40111c&nbsp; &nbsp; f20f5cc1&nbsp; &nbsp; &nbsp; &nbsp; REPNE SUBSD X1, X0&nbsp; &nbsp; flops.go:30 0x401120&nbsp; &nbsp; f20f110548441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4448(IP)&nbsp; &nbsp; flops.go:31 0x401128&nbsp; &nbsp; f20f1005d07f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7fd0(IP), X0&nbsp; &nbsp; flops.go:31 0x401130&nbsp; &nbsp; f20f100dc07f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7fc0(IP), X1&nbsp; &nbsp; flops.go:31 0x401138&nbsp; &nbsp; f20f59c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE MULSD X1, X0&nbsp; &nbsp; flops.go:31 0x40113c&nbsp; &nbsp; f20f11052c441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e442c(IP)&nbsp; &nbsp; flops.go:32 0x401144&nbsp; &nbsp; f20f1005b47f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7fb4(IP), X0&nbsp; &nbsp; flops.go:32 0x40114c&nbsp; &nbsp; f20f100da47f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7fa4(IP), X1&nbsp; &nbsp; flops.go:32 0x401154&nbsp; &nbsp; f20f5ec1&nbsp; &nbsp; &nbsp; &nbsp; REPNE DIVSD X1, X0&nbsp; &nbsp; flops.go:32 0x401158&nbsp; &nbsp; f20f110510441e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4410(IP)&nbsp; &nbsp; flops.go:33 0x401160&nbsp; &nbsp; f20f1005987f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f98(IP), X0&nbsp; &nbsp; flops.go:33 0x401168&nbsp; &nbsp; f20f100d887f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f88(IP), X1&nbsp; &nbsp; flops.go:33 0x401170&nbsp; &nbsp; f20f58c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE ADDSD X1, X0&nbsp; &nbsp; flops.go:33 0x401174&nbsp; &nbsp; f20f1105f4431e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e43f4(IP)&nbsp; &nbsp; flops.go:34 0x40117c&nbsp; &nbsp; f20f10057c7f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f7c(IP), X0&nbsp; &nbsp; flops.go:34 0x401184&nbsp; &nbsp; f20f100d6c7f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f6c(IP), X1&nbsp; &nbsp; flops.go:34 0x40118c&nbsp; &nbsp; f20f5cc1&nbsp; &nbsp; &nbsp; &nbsp; REPNE SUBSD X1, X0&nbsp; &nbsp; flops.go:34 0x401190&nbsp; &nbsp; f20f1105d8431e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e43d8(IP)&nbsp; &nbsp; flops.go:35 0x401198&nbsp; &nbsp; f20f1005607f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f60(IP), X0&nbsp; &nbsp; flops.go:35 0x4011a0&nbsp; &nbsp; f20f100d507f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f50(IP), X1&nbsp; &nbsp; flops.go:35 0x4011a8&nbsp; &nbsp; f20f59c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE MULSD X1, X0&nbsp; &nbsp; flops.go:35 0x4011ac&nbsp; &nbsp; f20f1105bc431e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e43bc(IP)&nbsp; &nbsp; flops.go:36 0x4011b4&nbsp; &nbsp; f20f1005447f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f44(IP), X0&nbsp; &nbsp; flops.go:36 0x4011bc&nbsp; &nbsp; f20f100d347f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f34(IP), X1&nbsp; &nbsp; flops.go:36 0x4011c4&nbsp; &nbsp; f20f5ec1&nbsp; &nbsp; &nbsp; &nbsp; REPNE DIVSD X1, X0&nbsp; &nbsp; flops.go:36 0x4011c8&nbsp; &nbsp; f20f1105a0431e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e43a0(IP)&nbsp; &nbsp; flops.go:37 0x4011d0&nbsp; &nbsp; f20f1005287f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f28(IP), X0&nbsp; &nbsp; flops.go:37 0x4011d8&nbsp; &nbsp; f20f100d187f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f18(IP), X1&nbsp; &nbsp; flops.go:37 0x4011e0&nbsp; &nbsp; f20f58c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE ADDSD X1, X0&nbsp; &nbsp; flops.go:37 0x4011e4&nbsp; &nbsp; f20f110584431e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4384(IP)&nbsp; &nbsp; flops.go:38 0x4011ec&nbsp; &nbsp; f20f10050c7f1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7f0c(IP), X0&nbsp; &nbsp; flops.go:38 0x4011f4&nbsp; &nbsp; f20f100dfc7e1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7efc(IP), X1&nbsp; &nbsp; flops.go:38 0x4011fc&nbsp; &nbsp; f20f5cc1&nbsp; &nbsp; &nbsp; &nbsp; REPNE SUBSD X1, X0&nbsp; &nbsp; flops.go:38 0x401200&nbsp; &nbsp; f20f110568431e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4368(IP)&nbsp; &nbsp; flops.go:39 0x401208&nbsp; &nbsp; f20f1005f07e1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7ef0(IP), X0&nbsp; &nbsp; flops.go:39 0x401210&nbsp; &nbsp; f20f100de07e1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7ee0(IP), X1&nbsp; &nbsp; flops.go:39 0x401218&nbsp; &nbsp; f20f59c1&nbsp; &nbsp; &nbsp; &nbsp; REPNE MULSD X1, X0&nbsp; &nbsp; flops.go:39 0x40121c&nbsp; &nbsp; f20f11054c431e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e434c(IP)&nbsp; &nbsp; flops.go:40 0x401224&nbsp; &nbsp; f20f1005d47e1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7ed4(IP), X0&nbsp; &nbsp; flops.go:40 0x40122c&nbsp; &nbsp; f20f100dc47e1b00&nbsp; &nbsp; REPNE MOVSD_XMM 0x1b7ec4(IP), X1&nbsp; &nbsp; flops.go:40 0x401234&nbsp; &nbsp; f20f5ec1&nbsp; &nbsp; &nbsp; &nbsp; REPNE DIVSD X1, X0&nbsp; &nbsp; flops.go:40 0x401238&nbsp; &nbsp; f20f110530431e00&nbsp; &nbsp; REPNE MOVSD_XMM X0, 0x1e4330(IP)&nbsp; &nbsp; flops.go:20 0x401240&nbsp; &nbsp; 48ffc0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INCQ AX&nbsp; &nbsp; flops.go:20 0x401243&nbsp; &nbsp; 4839c8&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CMPQ CX, AX&nbsp; &nbsp; flops.go:20 0x401246&nbsp; &nbsp; 0f8cc4fdffff&nbsp; &nbsp; &nbsp; &nbsp; JL 0x401010&nbsp; &nbsp; flops.go:42 0x40124c&nbsp; &nbsp; c3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RET
随时随地看视频慕课网APP

相关分类

Go
我要回答