[Lisp] Re: Ray tracing

2007-03-29 tråd Mattias Engdegård
Lars Brinkhoff <[EMAIL PROTECTED]> writes:

>Nja, det är vad bra Lispkompilatorer ofta klarar av om man anstränger
>sig.

Bra C-kompilatorer klarar av rätt mycket också om man anstränger sig.
Det saknas inte tillämpningar där Lisp är vida överlägset C, men man
skall nog inte överdriva.

>I västa fall har jag skissat på kod som kompilerar till C, anropar
>gcc, läser in objektfilen i Lisp, och automatiskt skapar ett
>FFI-gränssnitt till funktionen.  Då borde jag få upp hastigheten. :)

Visst, det är ungefär så som FFTW är skrivet förutom att det är gjort
som ett C-bibliotek; Lisp hade dugt utmärkt till en sådan sak.

>Det innebär ofta att man får lägga till många deklarationer, vilket
>förmodligen kan anses minska läsbarheten.  Dock tänker jag mig att kan
>jag abstrahera bort många sådana detaljer genom ett lämpligt
>lager med makron.

Men att man överhuvudtaget skall behöva göra sådant manuellt är ju
inte så lyckat. Typinferens och funktionskloning/specialisering borde
väl kunna eliminera behovet av de flesta deklarationer?
Det skall erkännas att kontroll av vektorindexgränser kan kräva ganska
sofistikerat maskineri i allmänhet.

>> Jon Harrop

>Enligt min erfarenhet verkar hans resonemang ofta gå ut på att
>presentera en studie av ett litet, begränsat problem, och sedan
>applicera resultatet generellt på problem av godtycklig storlek.

Jag håller absolut inte alltid med honom, men till hans heder hör att
han ofta presenterar konkreta exempel och data och inte bara tycker
till. Det är det inte alla som gör.



___
Lisp mailing list
Lisp@lisp.se
http://mailman.nocrew.org/cgi-bin/mailman/listinfo/lisp


Re: [Lisp] Ray tracing

2007-03-29 tråd Lars Brinkhoff
Ingvar skrev:
> Jag knackade dessutom ihop ett makrolager för att slippa boxade
> flyttal, men det visade sig inte göra någon större skillnad (och om
> det var skillnad var det långsammare) i det enda fall jag testade
> den på.

Jasså?  I mitt test har jag för mig att det gjorde lite skillnad.  Det
var framförallt boxning av returvärdet jag undvek, något i stil med:

  ;;; Före.
  (defun foo/boxed ()
42f0)

  ;;; Efter.
  (deftype box () '(simple-array single-float ()))
  (defun foo/unboxed (result)
(declare (box result))
(setf (aref result) 42f0)
nil)

___
Lisp mailing list
Lisp@lisp.se
http://mailman.nocrew.org/cgi-bin/mailman/listinfo/lisp


Re: [Lisp] Re: Ray tracing

2007-03-29 tråd Lars Brinkhoff
Mattias Engdegård skrev:
> Lars Brinkhoff skrevL
> > Nja, det är vad bra Lispkompilatorer ofta klarar av om man
> > anstränger sig.
> Bra C-kompilatorer klarar av rätt mycket också om man anstränger sig.
> Det saknas inte tillämpningar där Lisp är vida överlägset C, men man
> skall nog inte överdriva.

Du kanske missförstod mig?  När jag skrev "inom 10%" menade jag alltså
att Lispprogrammet skulle ha en körtid som ligger på max 110% av mot-
svarande C-program.

> Typinferens och funktionskloning/specialisering borde väl kunna
> eliminera behovet av de flesta deklarationer?

Ja, och SBCL-kompilatorns typinferens verkar göra det, fast det finns
nog utrymme för ytterligare förbättringar.

___
Lisp mailing list
Lisp@lisp.se
http://mailman.nocrew.org/cgi-bin/mailman/listinfo/lisp