love5an: (Default)
Все-таки, Clozure CL далеко не такой крутой компилятор, как 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


Разница в скорости выполнения понятна, соответственно, какая.
Когда же последний, наконец, под винду допилят?

Profile

love5an: (Default)
Dmitry Ignatiev

June 2020

S M T W T F S
 123456
78910 111213
14151617181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 7th, 2025 08:03 am
Powered by Dreamwidth Studios