Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  Problem beim ermitteln der Funktions-Dauer

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO
Autor Thema:  Problem beim ermitteln der Funktions-Dauer (2951 / mal gelesen)
AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 04. Mrz. 2016 11:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


function-duration.lsp

 
Hallo zusammen,

vielleicht für den einen oder anderen eine recht triviale Geschichte, aber ich beiße mir gerade die Zähne dran aus.

Zum Hintergrund:
Da ich hin und wieder (und zunehmend öfters) die Dauer von Funktionen ermittle (man will ja auch, dass sein Code einigermaßen zügig arbeitet) und ich das immer wieder in meinen eigenen Code mache, habe ich mir gedacht es wäre doch nett, wenn man alle Funktionen und deren Dauer ermitteln könnte ohne das man dieses in seine Funktionen reinhängt. Als Basis diente übrigens dieser Blogeintrag:

http://www.clausbrod.de/cgi-bin/view.pl/CoCreateModeling/MacroSymbolFunction

Mein Intention war folgende: Ich schreibe eine Funktion welcher ich als Parameter eine Funktion übergebe, diese generiert dann wiederum eine neue Funktion welche die verstrichene Zeit berechnet während die ursprüngliche Funktion aufruft wird und ersetze dann mittels setf und symbol-function die ursprüngliche Funktion.

Soweit so gut. Dieses Funktioniert auch. Bei den OSD eigenen Funktionsaufrufen (z.B. sd-inq-curr-part) funktioniert es wie erwartet. Handelt es sich jedoch um eine selbst geschriebene Funktion
steigt es mit der folgenden Fehlermeldung aus:

Code:
The function LAMBDA-BLOCK is undefined.

Gibt es hier einen unterschied zwischen compilierten und interpretiertem Code oder habe ich mich hier mit den Packages verhaspelt? 

Bin für jeden Hinweis dankbar.
Besten Dank und freundlichen Grüßen,

    Alex

P.S.: Anbei der vereinfachte Code für ein verregnetes Wochenende.

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 04. Mrz. 2016 14:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Wow, da hat jemand aber gezaubert :-D Bin beeindruckt.

Ohne genauer reinzuschauen, wäre mein erster Verdacht eher in Richtung Package-Problem. Aber wie gesagt, das ist nur die erste Kniescheibenreflexreaktion und kann daher ganz falsch sein.

Bevor ich mich in den Code vertiefe, zunächst als einleitende Frage: Ich nehme an, das Zeitmessungsmakro (time) von Common Lisp (siehe http://www.lispworks.com/documentation/HyperSpec/Body/m_time.htm) ist in Deinem Fall nicht ausreichend?

Code:

(defun testfn()
(dotimes (i 1000) (print "foo")))

(time (testfn))

"foo"
"foo"
...
"foo"
real time : 1.000 secs
run time : 0.062 secs


------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

[Diese Nachricht wurde von clausb am 04. Mrz. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 06. Mrz. 2016 21:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Es hat dann am Wochenende doch nicht mehr zur kompletten Analyse gereicht. Ich konnte aber zumindest inzwischen die beschriebene Fehlermeldung nachvollziehen.

Ich frage mich aber doch, ob Du nicht mit dem Standardmakro (time) einfacher und besser bedient wärest.

Falls (time) aus irgendeinem Grund nicht passen sollte, kannst Du auch ein eigenes Zeitmessmakro schreiben. Hier das Grundgerüst für solch ein Makro:

Code:
(defmacro function-duration(body)
  `(let ((start-time (f2::seconds-since-1970)))
    (unwind-protect
        (progn ,body)
      (format t "~%Execution time: ~,3F~%" (- (f2::seconds-since-1970) start-time)))))

Beispiel für die Benutzung:

Code:

  (function-duration (test-func 42))


------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

[Diese Nachricht wurde von clausb am 06. Mrz. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 07. Mrz. 2016 12:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Die Funktion time war mir bis Dato nicht bekannt. Dafür spricht auch  das Konstrukt "(let ((start-time (f2::seconds-since-1970))) ... ", richtig erkannt. Heute Abend werde ich Guy L. Steele Jr. CLTL noch einmal aus dem Keller holen und nicht nur Querlesen - versprochen. 

Der eigentliche Gedanke war mich in bereits geladene Funktionen zu hängen - ohne das Coding anzupacken bzw. zu "überladen" - um z.B. im laufenden/produktiven Betrieb nach zu vollziehen was wie lange dauert.
Da ist die Funktion time nur mehr eine hilfreiche Vereinfachung bzw. Ergänzung.

Ich vermute langsam, dass symbol-function zwischen interpretiertem und compiliertem Code Unterscheidet bzw. diese unterschiedlich behandelt. Sollte ich zu neuen Erkenntnissen kommen, werde ich mich an dieser Stelle noch mal melden.

BTW: Ich sehe gerade: Aktuell 42 Beiträge und ich habe immer noch keine Antwort auf die Frage nach dem Leben, dem Universum und dem ganzen Rest bekommen.

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 07. Mrz. 2016 13:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von AlexG:
Der eigentliche Gedanke war mich in bereits geladene Funktionen zu hängen - ohne das Coding anzupacken bzw. zu "überladen"

Also schwebt Dir mehr sowas wie ein Profiler vor?

Zitat:
Ich vermute langsam, dass symbol-function zwischen interpretiertem und compiliertem Code Unterscheidet bzw. diese unterschiedlich behandelt.

Bei meinen Tests funktionierte symbol-function übrigens auch für "interpretierten" Code.

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 07. Mrz. 2016 16:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Also wenn ich die Wikipedia richtig verstanden habe ist ein Profiler genau, dass was ich versuche zu bauen.
Ein Profiler - interessant, so nennt sich das also.

Der Ursprung meines Verdachts rührt aus folgendem verhalten:

Code:
(oli:Display (functionp (symbol-function 'oli:sd-inq-curr-part))) => T
(oli:Display (type-of (symbol-function 'oli:sd-inq-curr-part))) => COMPILED-FUNCTION
(oli:Display (symbol-function 'oli:sd-inq-curr-part)) => #<compiled-function SD-INQ-CURR-PART>

(oli:Display (functionp (symbol-function 'test-func))) => T
(oli:Display (type-of (symbol-function 'test-func))) => CONS
(oli:Display (symbol-function 'test-func)) => (LAMBDA-BLOCK TEST-FUNC (CNT)
                                                Just another function to test.
                                                (DOTIMES (I CNT) (FORMAT T ~%~a I)))


Die compilierte Funktion wird als compiled function und der interpretierte Code, wird (warum auch immer) als Symbol vom Typen cons deklariert.

Da ich jetzt aber das Schlagwort "Profiler" zur Hand habe, kann ich noch etwas exakter Recherchieren.

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 07. Mrz. 2016 23:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Klar - die Darstellung einer kompilierten Funktion unterscheidet sich von einer interpretierten, und daher sieht das, was symbol-function liefert, jeweils etwas anders aus. Aber in beiden Fällen kann man das, was (symbol-function) liefert, hinterher mit (funcall) oder (apply) rufen. Das habe ich heute Abend gründlich durchgetestet.

Ich denke, ich habe inzwischen eine passende Lösung, brauche aber noch einen Feierabend, bis ich sie veröffentlichungsreif habe. Dienstag/Mittwoch dann mehr zu dem Thema.

  Claus

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 08. Mrz. 2016 09:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

w ... bin gespannt wie ein Flitzebogen.

Aber irgendwie hat es mir dann doch keine Ruhe gelassen...
Und nun funktioniert es. Wie könnte es auch anders sein, war es ein reines Quotingproblem. Nachdem ich über Portable Metric-Implementierungen in Lisp gestolpert bin musste ich jedoch festellen, dass mein Quoting noch harmlos ist.

Anstatt:

Code:
(apply ,(symbol-function func) args)

Sollte der Code wie folgt aussehen:

Code:
(apply ',(symbol-function func) args)

So jetzt reibe ich mir die Hände und überlege, was man denn damit alles so schönes machen kann. Nachdem ich das Stichwort Profiler/Profiling hatte und ein wenig recherchiert habe sind noch eine Menge Ideen dazu gekommen.

Aber ich bin trotzdem noch sehr gespannt wie deine Lösung aussieht.

Gruß Alex

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

[Diese Nachricht wurde von AlexG am 08. Mrz. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 08. Mrz. 2016 22:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Glückwunsch!

Und hier ist die Rohfassung meines Ansatzes:

http://www.clausbrod.de/Blog/DefinePrivatePublic20160308LispProfiler

Meine Variante ersetzt die eval/defun-Akrobatik durch eine Lambda-Closure. Ausserdem kann sie Zeiten akkumulieren. Ich werde in den nächsten Tagen noch ein paar Sachen aufhübschen, aber ich glaube, auch mit dieser sehr einfachen Variante kann man schon einiges anfangen. Bin gespannt auf Testresultate, versteht sich ;-)

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 09. Mrz. 2016 07:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Irgendwas scheint in deinem Blog nicht ganz sauber zu laufen. Der Link funktioniert leider nicht. Weder als TwikiGast noch als angemeldeter Benutzer. Und beim Navigieren durch den Blog erhalte ich für den Monat März folgende Meldung.

Code:
TOC: No TOC in "Blog.DefinePrivatePublic201603"
% INCLUDE{DefinePrivatePublic20151102ChangeDirectoryDuringStartup} %
Previous month: Click here.

Das machst Du doch bestimmt nur um die Spannung weiter oben zu halten... 

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 09. Mrz. 2016 08:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Argl, da war ich schlampig. Du solltest dem Link jetzt folgen können.

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 09. Mrz. 2016 12:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Was soll ich sagen? Profi ist bleibt eben Profi!   

Sehr elegant. Dagegen wirkt mein Konstrukt einfach nur plump. Es kommt auch ganz ohne (verwirrendes) Quoting und ohne I-Kit Aufrufe (abgesehen von den letzten drei ignorierbaren Zeilen) aus, was den Code portabel macht.

Erste Tests laufen und wie könnte es anders sein, funktioniert es tadellos. Ein- und Aushängen, ob mit oder ohne Parameter, ob interpretiert oder Compilat. Darstellung der Zeiten, auch aufaddiert. Top.

Aber auch hier finden sich einige Funktionen wieder mit denen ich bis heute noch nie gearbeitet... Viel lernen ich noch muss.

Direkt eine erste Frage: Was soll denn an diesem Code noch "aufgehübscht" werden?
Und gleich die zweite hinterher: Geht das denn überhaupt?   

Besten Dank für die hilfreiche Unterstützung.

Gruß Alex

Nachtrag: Ich hatte es überlesen. Natürlich ist die Funktion f2:seconds-since-1970 nicht implementations unabhängig.

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

[Diese Nachricht wurde von AlexG am 10. Mrz. 2016 editiert.]

[Diese Nachricht wurde von AlexG am 10. Mrz. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 11. Mrz. 2016 08:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ergänzend habe ich nun noch einige Werte aus memory-usage mit einfließen lassen. Im nächsten Schritt werde ich noch etwas GUI stricken und die Ausgabe noch in eine Datei umleiten.

Zusätzlich ist es eine wunderbare Basis um pre-/post apply events auf alle möglichen Funktionsaufrufe zu erstellen. Sobald ich Zeit finde werde ich diese Punkte auch noch umsetzen und bereitstellen.

Gruß Alex

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 11. Mrz. 2016 09:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

So viel Elan ;-)

Danke fürs Lob. Ich habe noch ein paar Änderungen in der Mache. Ich hatte vor, am Wochenende ein github-Projekt aufzusetzen, was dann auch die gemeinsame Arbeit erleichtern würde.

Claus

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 12. Mrz. 2016 21:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Moinmoin,

wie angekündigt, ist das Projekt jetzt auf Github veröffentlicht:

https://github.com/clausb/lisp-profiler

Nach aussen ist die wichtigste Neuerung wahrscheinlich das Makro with-profiler, mit dem sich die Anwendung erheblich vereinfacht:

Code:

(profiler.clausbrod.de:with-profiler ('function-to-be-profiled) (run-some-performance-test))

Oder man lässt neben der Testfunktion gleich noch alle Funktionen in einem Package messen:

Code:

(profiler.clausbrod.de:with-profiler ('function-to-be-profiled (find-package "MY-PACKAGE"))
(run-some-performance-test))

Beiträge sind natürlich sehr willkommen - deswegen ja auch die Veröffentlichung per Github. Im Moment ändert sich allerdings noch recht viel. Ich schätze, dass so etwa in einer Woche mehr Stabilität einzieht und sich dann erstmals halbwegs sinnvoll auf den Code aufsetzen lässt, was eigene Änderungen angeht.

Bescheid ;-)

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

[Diese Nachricht wurde von clausb am 12. Mrz. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 12. Mrz. 2016 22:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nabend,

ich hoffe es blieb trotzdem noch genügend Zeit ein wenig das schöne Wochendwetter zu genießen. Habe gerade nur kurz einen Blick drauf geworfen, da meine Nase, wie bereits angedroht in CLtL steckt... wenn ich mir deinen Code so anschau bestätigt sich der Verdacht, dass ich noch SEHR viel zu lernen habe. 
Sobald ich dazu komme werde ich es weiter testen.
Bin gespannt wohin die Reise noch geht.
Wünsch noch ein entspanntes Restwochenende.

Gruß Alex

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 14. Mrz. 2016 10:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von AlexG:
Zusätzlich ist es eine wunderbare Basis um pre-/post apply events auf alle möglichen Funktionsaufrufe zu erstellen.

Wenn ich mich recht entsinne, kann man bei den KCL-Abkömmlingen (dazu gehört auch die Lisp-Implementierung in CoCreate Modeling) das (trace)-Makro mit :entry- und :exit-Forms versorgen. Weiss gerade nicht mehr auswendig, wie das geht, aber wenn das noch funktioniert, wäre es eine ganz simple Basis für das, was Du "pre/post apply events" nennst. Dazu bräuchte man dann nicht unbedingt eine eigene Profiler-Infrastruktur.

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 132
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 14. Mrz. 2016 22:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Im KCL Report habe ich erst einmal nichts überraschend neues über den Tracer finden können. Wenn man sich die Funktionalität in AKCL anschaut, kann einem Angst und Bange werden... was es da alles noch für Möglichkeiten gibt (:DECLARATIONS, :COND, :ENTRYCOND,...). Aber das mit dem "Feuern der Events" ist Off Topic, ein Nebenkriegsschauplatz, und lässt sich wie gerade gelernt, relativ einfach umsetzen. Wieder ein dickes Dankeschön für den tollen Tipp.

Die Funktionalitäten provide und requiere find ich sehr aufschlussreich - nun verstehe ich endlich welche "Magie" hinter dem Laden der (SolidDesigner) Goodies steckt.
Auch wenn sich gerade das eine oder andere Geheimnis für mich gelüftet hat, habe ich immer mehr das Gefühl am Eingang des Kaninchenbaus zu stehen.

Ich habe gerade eben noch einmal getestet. Auf anderer Hardware und dabei kam mir direkt die Frage in den Sinn: Welcher Rechnenknecht läuft denn "Flotter". Für die Auswertung der GPU-Performance gibt es doch, richtig: viewbench. Aber für die "CPU-Performance" (ich nenne es einfach mal so, da spielt natürlich noch mehr Hardware mit) gibt es meines wissen nach noch keinen standardisierten Test. Ein Framework für solch einen Test ist ja mittlerweile durchaus gegeben. Fehlt noch eine vereinheitlichte Reihenfolge von (Test-)Funktionsaufrufen... und das ein oder andere, was ich sonst vergessen habe. Wenn die Zeit es zulässt, werde ich mir darüber auch noch einmal Gedanken machen.

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

[Diese Nachricht wurde von AlexG am 15. Mrz. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 19. Mrz. 2016 19:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexG 10 Unities + Antwort hilfreich

Nun hat es doch ein paar Tage länger gedauert.

Auf den eigentlichen Profiler-Code aufgesetzt gibt es nun einen einfachen Dialog. Den bitte ich von der Bedienung her nur als ersten Anlauf zu bewerten.

Den Code kann man sich abholen unter https://github.com/clausb/lisp-profiler . Dort gibt es auch die aktuelle Dokumentation.

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz