Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ab3 kompiliert langsamst unter MorphOs [gelöst]
#1
Hallo Leute

Da ich mich zwecks mangelnder Hardware für Os4 nun mehr mit MorphOs beschäftige, ist mir aufgefallen das Ab3
extrem langsam kompiliert. Ich kann mich erinnern das wir das Thema vor vielen Jahren schonmal hatten, aber ich weis nicht mehr
wie die Lösung war (evtl. weis Bernd da noch was drüber ?)

Jetzt werden evtl. viele sagen das es doch "schnell" geht mit den beiliegenden Sourcen (dbl usw) aber PfP (ziemlich groß) oder Copakabana (recht klein)
dauern ewig !!! Unter OS4 geht das in Sekunden, unter MorphOs dauert das viele Minuten...

Wer also sachdienliche Hinweise beisteuern kann immer her damit....
Zitieren
#2
Copakabana ist sehr gross wenn du ntui mit rein kompilierst.
Das hatte irgendwas mit dem CPU Cache zu tun. Ich dachte Bernd hätte das Problem beseitigt.
Zitieren
#3
Nein hat er scheinbar dann nicht...

Na ja, evtl. schaut er ja hier mal wieder vorbei und hilft.
Zitieren
#4
Ach so fast vergessen.

Mein PEg1 hat sagenumwobene 601Mhz gewaltige Cpupower und das Betriebssystem wäre das aktuellste (3.7) Big Grin

Der A1 hatte auch nur 800Mhz, nur so zum vergleich für Bernd...
Zitieren
#5
habe mal wieder geschaut
Ich habe da einen Vorschlag gemacht, es hat auch funktioniert, war auch mit winuae schneller. müsst halt getestet werden, ob es vielleicht doch manchmal fehlschlägt. der code ist irgendwo im alten forum. müsste man mit suche nach clearcache oder cacheclear finden.
Es gibt auch code der nur mit 040 CPU geht und schon in blitz drin war. auf winuae ist der 40 code aber nun drin. müsste dort also auch laufen. kannst mal in MOS testen ob das geht. manche stellen sind 2* deaktiviert.

CPUSHL Dc,(A1)
cinvl ic,(a1)

kennt der blitz assembler aber nicht. alle stellen musste dann so ändern

dc.w $f469 ;CPUSHL Dc,(A1)
dc.w $f489 ;cinvl ic,(a1)

das
; BRA.S 'l10
das ist der code, der je nach CPU flag(wenn 040/060 CPU) verzweigt.

musste dann je nachdem mit bne oder beq ersetzen. vielleicht im original blitz source schauen wie es war

;Aclearcache2: MOVEM.l D0-D1/A0-A1/A6,-(A7)
; MOVEA.l $4,A6
; MOVE $128(A6),D0
; BTST #3,D0
; BRA.S 'l10
;; MOVE.l a0,-(a7)
;; JSR -$96(A6)
;; JSR -$78(A6)
;; MOVEA.L (A7)+,A1
;; CPUSHL Dc,(A1)
;; cinvl ic,(a1)
;; ADDA #16,a1
;; CPUSHL Dc,(A1)
;; cinvl ic,(a1)
;; ADDA #16,a1
;; CPUSHL Dc,(A1)
;; cinvl ic,(a1)
;; ADDA #16,a1
;; CPUSHL Dc,(A1)
;; cinvl ic,(a1)
;; ADDA #16,a1
;; CPUSHL Dc,(A1)
;; cinvl ic,(a1)
;; ADDA #16,a1
;; CPUSHL Dc,(A1)
;; cinvl ic,(a1)
;; JSR -$7E(A6)
;; JSR -$9C(A6)
;; BRA 'l20
;'l10
; MOVEA.l $4,A6
;CacheClearU SET -$27C
; JSR CacheClearU(A6)
;'l20 MOVEM.l (A7)+,D0-D1/A0-A1/A6
; RTS
Zitieren
#6
Danke Bernd.

Nun geht die Sucherei los Big Grin

Undd as würde evtl. auch auf dem origanl Amiga was bringen ?
Zitieren
#7
und haste schon gefunden ?
auf dem original amiga bringt es nicht viel. wird auf jedenfall nicht langsamer. Der code checkt, ob die end Adresse des vorigen erzeugten codes(auch formeloptimierung) kleiner ist als die adresse des codes der für die Formeloptimierung erzeugt wird. ist das der Fall, muss der Cache nicht gelöscht werden. denn dann kann der code ja nicht im JIT cache stehen. dadurch wurde es unter MOS schon schnell genug.
Zitieren
#8
Ja hab die Stelle gefunden, habs auch so aktiviert und ergänzt wie von dir vorgeschlagen.
Allerdings mußte ich den Label CacheClear ändern, das label wurde wahrscheinlich umbenannt in _CacheClear. Ob das noch das selbe macht weis ich nicht, hab noch nicht geschaut.

Wenn Ntui im Spiel ist, kompiliert es aber auch nicht schneller.
Das Bra.S habe ich mit bne ersetzt. Sollte ich evtl beq versuchen ? Hätte das vorteile ?
Zitieren
#9
@tomsmart1

Hast du denn die Änderungen auch mal gemacht und irgendwas festgestellt ?
Zitieren
#10
Nein habe ich noch nicht, hab noch etwas mit PEd gekämpft Wink
Meine Änderungen an PEd wollte ich eigentlich heute committen, leider klappt das erst mal nicht vom Amiga aus da Sourceforge die Verschlüsselung geändert/verschärft hat. Ich muss wohl das Repository/Localcopy auf dem PC unter Windows oder Linux pflegen, da Amissl das nicht mehr schafft Sad

Schick mir mal den geänderten Source/exe vom Compiler dann teste ich mal hier auf dem Amiga.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 7 Gast/Gäste