Welchen native compiler für lisp?
-
Welchen native compiler nimmt man für lisp?
sbcl? gcl?Soweit ich weiß kann clisp nur zu bytecode kompilieren, aber ich will native compilation. Weiß jemand welche optionen ich an sbcl oder gcl übergeben muss, damit es native compiled binaries ausspuckt?
gcl -compile bla.lisp
hat mir nur eine bla.o ausgespuckt.
-
gcl? Du meinst GNU Common Lisp? Das ist AFAIK nicht ANSI Common Lisp kompatibel.
Ich benutze SBCL. Ist eigentlich ein ziemlich guter Compiler und weit verbreitet. Ansonsten gibt es noch ECL, der den Code in (unleserliches) C umwandelt.
-
Noch ne Stimme für SBCL. Falls du "LISP" meintest, kannst du dir auch mal Chicken oder Bigloo ansehen.
-
Kann mir mal einer sagen wie ich eine binry mit sbcl erstelle? Also kein bytecode sonder eine echte binary (wie exe unter widnows und elf format unter linux).
ich komme damit nicht wirklich zurecht.
-
Ich mag auch SBCL gerne, selbst wenn es wohl in Punkto Portabilität nicht unbedingt ganz top ist.
-
nman schrieb:
Ich mag auch SBCL gerne, selbst wenn es wohl in Punkto Portabilität nicht unbedingt ganz top ist.
Schön udn gut, aber was muss ich in sbcl genau eingeben damit ich ne echte binry bekomme?
sb-ext:save-lisp-and-die core-file-name &key toplevel purify root-structures environment-name executable
verstehe ich nicht so ganz. wo soll ich da :executive übergeben? wie rufe ich das auf?
-
versuch das besser erst wenn du mit solchen Funktionsdeklarationen von alleine was anfangen kannst... die 40mb-sbcl-binary willst du bestimmt eh nicht.
ECL kann kleiner, aber da muss man die Doku auch verstehen können.
-
DrGreenthumb schrieb:
versuch das besser erst wenn du mit solchen Funktionsdeklarationen von alleine was anfangen kannst... die 40mb-sbcl-binary willst du bestimmt eh nicht.
ECL kann kleiner, aber da muss man die Doku auch verstehen können.
Achsooo! Wird es dann so eine riesen binary? na dann will ichs doch nciht kompilieren^^
-
Lisp braucht halt noch die Laufzeitumgebung, die eben auch den Compiler enthält.
-
rüdiger schrieb:
Lisp braucht halt noch die Laufzeitumgebung, die eben auch den Compiler enthält.
Okay. Thx. Dann macht das "kompilieren" echt wenig Sinn.
Kurze Frage: Wie schaut es mit der Ausführugnsgeschwindigkeit aus?
Mit welcher Sprache kann ich die Ausführungsgeschwindigkeit vergleichen?
-
Kompilieren macht schon sinn (SBCL kann nur kompilieren!). Nur ein executable in dem Sinne zu erwarte macht keinen Sinn

Die Geschwindigkeit ist relativ gut. Aber es kommt stark drauf an was man macht und wie man programmiert. Wenn man alle Variablen/Funktionen deklariert und typisiert, wird der Code entsprechend schnell.
Nach diversen Benchmarks - die natürlich nur begrenzt etwas aussagen können - ist SBCL im Schnitt schneller als SUNs Java und teilweise sogar schneller als die C-Implementierung. Aber es gibt eben auch Situationen wo es dann erschreckend langsam wird (SBCL hatte zB bist zur aktuellen Version eine sehr langsame Hash-Implementierung).