(no subject)
Nov. 12th, 2009 08:50 pmВсе-таки, Clozure CL далеко не такой крутой компилятор, как SBCL.
Разница, наглядно:
CCL:
В SBCL, тот же код:
Разница в скорости выполнения понятна, соответственно, какая.
Когда же последний, наконец, под винду допилят?
Разница, наглядно:
(defun test (v out n) (declare (type fixnum n) (type vector3 v out) (optimize (speed 3) (space 0) (safety 0) (debug 0))) (dotimes (i n) (vec3-add v out out)))
CCL:
;;; (defun test (v out n) (declare (type fixnum n) (type vector3 v out) (optimize (speed 3) (space 0) (s
[0] (recover-fn)
[5] (movl (% ebp) (@ 8 (% esp)))
[9] (leal (@ 8 (% esp)) (% ebp))
[13] (popl (@ 4 (% ebp)))
[16] (pushl (% arg_y))
[17] (pushl (% arg_z))
;;; (dotimes (i n) (vec3-add v out out))
[18] (pushl ($ 0))
[20] (jmpl L728)
;;; (vec3-add v out out)
L25
( ~160 строчек )
;;; (dotimes (i n) (vec3-add v out out))
[719] (movl (@ -16 (% ebp)) (% arg_z))
[722] (addl ($ 4) (% arg_z))
[725] (movl (% arg_z) (@ -16 (% ebp)))
L728
[728] (movl (@ -16 (% ebp)) (% arg_y))
[731] (movl (@ -12 (% ebp)) (% arg_z))
[734] (cmpl (% arg_z) (% arg_y))
[736] (jl L25)
[742] (movl ($ 77825) (% arg_z))
[747] (leavel)
[748] (retl)
В SBCL, тот же код:
; disassembly for TEST ; 24C56BBA: 31C0 XOR EAX, EAX ; no-arg-parsing entry point ; BBC: EB39 JMP L1 ; BBE: L0: DDD8 FSTPD FR0 ; BC0: D94201 FLD [EDX+1] ; BC3: DDD9 FSTPD FR1 ; BC5: D94701 FLD [EDI+1] ; BC8: D9C9 FXCH FR1 ; BCA: D8C1 FADDD FR1 ; BCC: 9B WAIT ; BCD: D95701 FST [EDI+1] ; BD0: DDD8 FSTPD FR0 ; BD2: D94205 FLD [EDX+5] ; BD5: DDD9 FSTPD FR1 ; BD7: D94705 FLD [EDI+5] ; BDA: D9C9 FXCH FR1 ; BDC: D8C1 FADDD FR1 ; BDE: 9B WAIT ; BDF: D95705 FST [EDI+5] ; BE2: DDD8 FSTPD FR0 ; BE4: D94209 FLD [EDX+9] ; BE7: DDD9 FSTPD FR1 ; BE9: D94709 FLD [EDI+9] ; BEC: D9C9 FXCH FR1 ; BEE: D8C1 FADDD FR1 ; BF0: 9B WAIT ; BF1: D95709 FST [EDI+9] ; BF4: 83C004 ADD EAX, 4 ; BF7: L1: 39F0 CMP EAX, ESI ; BF9: 7CC3 JL L0 ; BFB: BA0B001022 MOV EDX, 571473931 ; C00: 8BE5 MOV ESP, EBP ; C02: F8 CLC ; C03: 5D POP EBP ; C04: C3 RET
Разница в скорости выполнения понятна, соответственно, какая.
Когда же последний, наконец, под винду допилят?