Skip to content

Instantly share code, notes, and snippets.

@Fuud
Last active January 1, 2016 09:09
Show Gist options
  • Save Fuud/8122612 to your computer and use it in GitHub Desktop.
Save Fuud/8122612 to your computer and use it in GitHub Desktop.
Смотрю микробенчмарк:
https://github.com/kuksenko/quantum/blob/master/src/main/java/quantum/selfstudy4/LoopBack.java
-----
Запускаю на
$ java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b105)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b47, mixed mode)
Intel Core i7-2600 3.40GHz
-----
Результаты
Benchmark Mode Thr Cnt Sec Mean Mean error Units Mean/Mean_forward_1K
q.s.LoopBack.backward1K avgt 1 10 5 0.348 0.009 nsec/op 1.14 +- 0.030
q.s.LoopBack.forward1K avgt 1 10 5 0.306 0.001 nsec/op 1
q.s.LoopBack.backward32K avgt 1 10 5 0.338 0.007 nsec/op 1.13 +- 0.024
q.s.LoopBack.forward32K avgt 1 10 5 0.298 0.002 nsec/op 1
q.s.LoopBack.backward4M avgt 1 10 5 0.457 0.014 nsec/op 1.06 +- 0.053
q.s.LoopBack.forward4M avgt 1 10 5 0.433 0.017 nsec/op 1
Замечание:
Обратный цикл в среднем работает медленнее.
Смотрим ассемблер.
java -XX:-TieredCompilation -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation -XX:+PrintInlining -XX:+PrintAssembly -jar target/microbenchmarks.jar "quantum.sel.*.Lo.*" -i 10 > out.txt
------------------------------------------------------------------------------------------------------------------
ForwardSum:
0x0000000002ad4a00: add 0x10(%rbx,%r13,4),%r14d
0x0000000002ad4a05: movslq %r13d,%r8
0x0000000002ad4a08: add 0x14(%rbx,%r8,4),%r14d
0x0000000002ad4a0d: add 0x18(%rbx,%r8,4),%r14d
0x0000000002ad4a12: add 0x1c(%rbx,%r8,4),%r14d
0x0000000002ad4a17: add 0x20(%rbx,%r8,4),%r14d
0x0000000002ad4a1c: add 0x24(%rbx,%r8,4),%r14d
0x0000000002ad4a21: add 0x28(%rbx,%r8,4),%r14d
0x0000000002ad4a26: add 0x2c(%rbx,%r8,4),%r14d
0x0000000002ad4a2b: add 0x30(%rbx,%r8,4),%r14d
0x0000000002ad4a30: add 0x34(%rbx,%r8,4),%r14d
0x0000000002ad4a35: add 0x38(%rbx,%r8,4),%r14d
0x0000000002ad4a3a: add 0x3c(%rbx,%r8,4),%r14d
0x0000000002ad4a3f: add 0x40(%rbx,%r8,4),%r14d
0x0000000002ad4a44: add 0x44(%rbx,%r8,4),%r14d
0x0000000002ad4a49: add 0x48(%rbx,%r8,4),%r14d
0x0000000002ad4a4e: add 0x4c(%rbx,%r8,4),%r14d ;*iadd
; - quantum.selfstudy4.LoopBack::forwardSum@14 (line 51)
0x0000000002ad4a53: add $0x10,%r13d ;*iinc
; - quantum.selfstudy4.LoopBack::forwardSum@16 (line 50)
0x0000000002ad4a57: cmp %r11d,%r13d
0x0000000002ad4a5a: jl 0x0000000002ad4a00 ;*if_icmpge
; - quantum.selfstudy4.LoopBack::forwardSum@7 (line 50)
------------------------------------------------------------------------------------------------------------------
BackwardSum
0x000000000299e895: add 0x10(%rdx,%rcx,4),%eax ;*iadd
; - quantum.selfstudy4.LoopBack::backwardSum@15 (line 59)
0x000000000299e899: dec %ecx ;*iinc
; - quantum.selfstudy4.LoopBack::backwardSum@17 (line 58)
0x000000000299e89b: cmp %r11d,%ecx
0x000000000299e89e: jg 0x000000000299e895 ;*iflt
; - quantum.selfstudy4.LoopBack::backwardSum@8 (line 58)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment