Entwickler-Ecke

Open Source Units - DelphiSpeedUp


toms - Mi 10.05.06 09:09
Titel: DelphiSpeedUp
DelphiSpeedUp (von Andreas Hausladen) wurde schon in diversen Foren vorgestellt. U.a auch bei Torry [http://www.torry.net/quicksearchd.php?String=delphispeedup&Title=Yes]

Die DelphiXSpeedUp.dll ist ein Delphi Experte (D2005 D2006 D5 D6 D7, BCB 5/6), der die gesamte Delphi IDE beschleunigt. Der Compiler wird davon nicht unbedingt schneller, aber Delphi lädt schneller und alle Operationen in der IDE sind auch flüssiger.

Der Experte ersetzt einige RTL Funktionen zur Laufzeit (also im Speicher) durch Funktionen aus dem FastCode Projekt [http://fastcode.sourceforge.net]. Des weiteren werden die TList Methoden durch schnellere ersetzt, und FastObj kommt zum Einsatz, womit die Erstellung und Zerstörung von Objekten durch Cachen des Speicherbereichs beschleunigt.

Download und Homepage [http://andy.jgknet.de/dspeedup]

Download von CodeCentral [http://cc.codegear.com/Author/54776]


Stefan-W - Mi 10.05.06 09:19

feine Sache!!! habs schon getestet...

für alle die nochmehr dazu wissen wollen: hier der Link ins DP [http://www.delphipraxis.net/topic80522,0,asc,0.html]


Tino - Mi 10.05.06 09:23

Ich habs bereits bei meiner Delphi 7 Installation laufen und vor allem der Start von Delphi ist jetzt um einiges schneller!

Danke für das tolle Tool! ;-)


oern - Mi 10.05.06 10:18

Echt ein Klassse Tool !


AndyB - Mi 10.05.06 18:59
Titel: Re: DelphiSpeedUp
user profile icontoms hat folgendes geschrieben:
U.a auch bei Torry

Na da bin ich gespannt, ob Torry immer schnell genug aktualisiert wird. Denn die Entwicklung von DSU schreitet ganz schön schnell voran.


toms - Mi 10.05.06 21:58

Sonst findest du hier immer die neuste Version:

http://andy.jgknet.de/misc/


AndyB - Mi 10.05.06 23:29

user profile icontoms hat folgendes geschrieben:
Sonst findest du hier immer die neuste Version:

Nö, die finde ich nur auf meiner Platte. Und alternativ im SVN. :wink:


Jakob Schöttl - Fr 12.05.06 07:25
Titel: Lob
hey, das ist wirklich viel schneller
ich hab mich erst nicht getraut zu installieren, aber es lohnt sich mindestens beim Starten...


toms - Fr 12.05.06 07:47

user profile iconbokaj hat folgendes geschrieben:
hey, das ist wirklich viel schneller
ich hab mich erst nicht getraut zu installieren, aber es lohnt sich mindestens beim Starten...


Auch die IDE wird schneller und man kann es sehr leicht jederzeit wieder deinstallieren/installieren.


Stefan-W - Fr 12.05.06 09:08

Ehe hier auch die Frage nach den Schltern und deren Funktion aufkommt, hab ich hier mal die der aktuellen Version:

jbg aus der DP hat folgendes geschrieben:

Die Optionen sind hauptsächlich für die Fehlersuche gedacht. Es wurde aber gewünscht, dass ich alle Registry Schalter veröffentlichen solle, was ich mit den Checkboxen im Installer nun getan habe.

  • DisableShouldRebuildDlg: Nun rate mal, welcher Dialog damit abgeschaltet wird. (Und nein, es ist nicht "Datei wurde geändert. Neuladen?", der nur durch einen Bug im FileAge-Cache weg war)
  • NoFastSys: Die FastSys.pas wird nicht benutzt (=> dyn. Arrays werden nicht schneller)
  • NoFastObj: Die FastObj.pas wird nicht benutzt (=> Objekt-Erzeugung und Zerstörung wird langsamer)
  • HookAllDlls: Beim hooken werden alle DLLs gehookt, also auch ShellAPI, ... (Außnahmen sind unter anderem kernel32.dll, user32.dll, gdi32.dll)
  • HookBplOnly: Nur BPL Dateien werde gehookt wenn sie statisch gegen eine von LoadLibrary/LoadPackagge geladene DLL/BPL gelinkt sind. Also nur die BPLs aus der Symbol-Import-Tabelle.
  • FastQuit: Die IDE wird schneller beendet, indem während dem Entladen der DelphiSpeedUp.dll ein "halt" ausgeführt wird.


  • Des weiteren gibt es noch einen nicht vom Installer einstellbaren Schalter:
    [HKCU\Software\DelphiTools\DelphiSpeedUp\X]\BlendedFastCode: DWORD = 0/1
    (0: default; 1: keine CPU optimierten FastCode Funktionen)



alias5000 - Fr 12.05.06 09:21

Cool, sogar im BDS2006 bringt das ungemein was :D


AndyB - Fr 12.05.06 12:47

user profile iconalias5000 hat folgendes geschrieben:
Cool, sogar im BDS2006 bringt das ungemein was :D

Es würde sogar noch mehr beim BDS-Start bringen, wenn Borland diesen Package-Cache, der teilweise langsamer ist als der alte CheckDuplicateUnits Algorithmus, nicht eingebaut hätte. Denn DSU schaltet die Funktion CheckDuplicateUnits aus, bis die IDE erscheint. Bei BDS 2006 hat das recht wenig wirkung, weil ja der Package-Cache benutzt wird statt LoadPackage. Bei BDS 2006 greifen also hauptsächlich nur die FastCode und FastObj Funktionen, die nicht den Startup Boost geben wie das deaktivieren von CheckDuplicateUnits.


Coder - Fr 12.05.06 13:36

Klingt nicht schlecht. :lupe:

Werden dann auch Änderungen an den compilierten Programmen vorgenommen oder nur an der IDE?

Edit// Leck mich am Arsch wie der abgeht! Startzeit von 12 auf 6 Sekunden :zustimm:


jasocul - Fr 12.05.06 14:11

Bei mir gibts keine spürbare Veränderung. Im Gegenteil. Die IDE fängt an, zu spinnen. Fehler wie "keine Objektreferenz" tauchen auf. Beim Beenden von D2005 Zugriffsverletzungen an Adresse 00000000.
Die Fehler hatte ich zuletzt vor der Installation der Service-Packs. :gruebel:


AndyB - Fr 12.05.06 20:17

user profile iconCoder hat folgendes geschrieben:
Werden dann auch Änderungen an den compilierten Programmen vorgenommen oder nur an der IDE?

Nein. Die Änderung betrifft nur die IDE und das auch nur zur Laufzeit.

Zitat:
Die IDE fängt an, zu spinnen.

Setze doch mal ein paar der "Debug"-Schalter von DelphiSpeedUp (im De-/Installer)
Und ggf. auch den BlendedFastCode Registry Key.

Für BDS 2006 wird z.B. standardmäßig der Schalter "Hook only static linked BPLs (no static linked DLLs)" gesetzt. Vielleicht ist das auch bei Delph 2005 notwendig (da dort auch das .NET Framework geladen wird).


jasocul - Fr 12.05.06 22:11

OK, teste ich mal. Allerdings geht das erst Montag.


toms - Do 18.05.06 22:42

Es gibt eine Neue Version 1.72:

Zitat:

Version 1.72
============
- Fixed: "&" was translated to AccelChar in the splash screen
- Fixed: "File not found filename.dcu" when compiling after using the open/save dialog
- Fixed: SetCurrentDir had not worked with "\\computer\share\" and "X:\"
- Added: BDS 2006 CheckDuplicateUnits hook for all packages (hooks function InitializePackage(Filename, ValidateCallback) )
- Added: Installer supports BCB 5 and 6.

Download [http://andy.jgknet.de/misc/DelphiSpeedUpV172.zip]
Quellcode [http://andy.jgknet.de/misc/DelphiSpeedUpSourceV172.7z]
Map-Dateien (für JclDebug, MadExcept, EurekaLog) [http://andy.jgknet.de/misc/DelphiSpeedUpV172MapFiles.zip]


Coder - Do 18.05.06 23:40

:zustimm:
Wie ist denn die schnellste Einstellung?


AndyB - Fr 19.05.06 00:47

Ich würde sagen: Die Standardeinstellung.

Alle Optionen im Installer sind nur für das Eingrenzen von Bugs in DelphiSpeedUp vorhanden.


Jakob Schöttl - Fr 19.05.06 07:48
Titel: [Bug] Delphi7 Prof, TActionManager
Hallo
Ich hab delphispeedup für Delphi 7 installiert und nun einen Fehler gefunden.

Ich platziere ein TActionManager-Objekt auf dem Formular und klicke nun auf die ellipsenschaltfäche der Eigenschaft "PrioritySchedule". Nun kommt eine FehlerMeldung:

"Zugriffsverletzung bei Adresse 01FF9444 in Modul 'DelphiSpeedUp7.dll'. Lesen bei Adresse 00000003"

Habs jetzt mal wieder deinstalliert, aber vielleicht kannst du ja noch was ändern?


Jakob Schöttl - Fr 19.05.06 07:51
Titel: Halt!
Der Bug liegt wohl nicht an dir!

Ohne deiner dll gehts nämlich auch nicht. Nun kommt:

"Zugriffsverletzung bei Adresse 40005948 in Modul 'rtl70.bpl'. Lesen bei Adresse 00000003"


toms - Fr 19.05.06 07:53

Hallo bokaj,

Unter D6 erscheint das Problem mit insatllierter DelphiSpeedUp6 auch nicht.


AndyB - Fr 19.05.06 13:05
Titel: Re: [Bug] Delphi7 Prof, TActionManager
user profile iconbokaj hat folgendes geschrieben:
"Zugriffsverletzung bei Adresse 01FF9444 in Modul 'DelphiSpeedUp7.dll'. Lesen bei Adresse 00000003"

Habs jetzt mal wieder deinstalliert, aber vielleicht kannst du ja noch was ändern?


Fehler da vielleicht das Delphi 7 Update 2 ?



Mit installiertem DSU werde einige Schutzverletzungen, die normalerweise in rtl70.bpl (vcl50.bpl, rtl60.bpl, rtl90.bpl, rtl100.bpl) auftreten nun in DelphiSpeedUpX.bpl auftreten, weil die Funktionen umgebogen wurden. Also nicht alles was eine Schutzverletzung ist, muss DSU zugeschrieben werden, auch wenn sie dort auftritt.

Bestes Beispiel:


Delphi-Quelltext
1:
FillChar(Pointer(nil)^, 1000);                    

Normalerweise würde sich hier eine Schutzverletzung in rtl70.bpl melden. Da aber FillChar auf DSU.FillChar umgeleitet wird, meldet sich halt nun die DelphiSpeedUp7.bpl mit der Schutzverletzung.


Delete - Fr 19.05.06 13:43
Titel: Re: [Bug] Delphi7 Prof, TActionManager
user profile iconAndyB hat folgendes geschrieben:

Fehler da vielleicht das Delphi 7 Update 2 ?


:shock: Häh :gruebel: Soll das fehlt heißen? :gruebel: Wenn ja, dann liegst du falsch, denn es gibt nur ein Update1 für Delphi 7.


AndyB - Fr 19.05.06 20:13
Titel: Re: [Bug] Delphi7 Prof, TActionManager
user profile iconMagicAndre1981 hat folgendes geschrieben:
:shock: Häh :gruebel: Soll das fehlt heißen?

Ja.

Zitat:
Wenn ja, dann liegst du falsch, denn es gibt nur ein Update1 für Delphi 7.

Stimmt. War irgendwie geistig bei Delphi 6.


AndyB - Sa 20.05.06 18:38
Titel: Re: DelphiSpeedUp
user profile icontoms hat folgendes geschrieben:
U.a auch bei [url=http://www.torry.net/quicksearchd.php?String=delphispeedup&Title=Yes]Torry[/url]


Da stellt sich mir die Frage, wer meine Identität für Torry benutzt. Ist Identitätenklau nicht illegal? Und ich bezweifle das es der Innenarchitekt Andreas Hausladen aus München (mit dem ich nicht im geringten verwandt bin) in Torry eingetragen hat.


toms - Do 25.05.06 14:48

Neue Version 1.8
Download [http://andy.jgknet.de/dspeedup]

Changelog:
============
- Fixed: The 'Disable "Files modified. Rebuild?"-Dialog' option caused the IDE to not recompile a project when changes were made during a debug session.
- Fixed: DLL unhooking could cause access violations
- Added: "File"/"Close all and kill" menu item for a very fast quit.
- Removed: FastSys optimizations. They caused crashes on some systems (maybe a bug in TThemeManagerD6 which definetly overwrites memory => FListViewList.Clear where FListViewList = $00000186)


fuba - Fr 01.09.06 10:01

omg, das merkt man ja wirklich ey!

Das ding gefällt mir, danke ;)


elundril - Di 05.09.06 19:16

wie funktioniert das alles (installation, funktionen), was ist das genau?


Tino - Di 05.09.06 20:35

Steht doch fast alles im ersten Beitrag.


AndyB - Mi 06.09.06 01:43

Es gibt übrigens mittlerweile schon die Version 1.99 [http://andy.jgknet.de/dspeedup]


elundril - Mi 06.09.06 14:37

tschuldigung aber wenn mans nicht genau verstanden hat wird man doch noch nachfragen dürfen oder?

mfg el


Regan - Di 23.10.07 18:30

Nach über einem Jahr grabe ich das Thread hier mal aus.
1. Es gibt eine neue Version: 2.7 [http://andy.jgknet.de/dspeedup/index.php]
2. Geiles Teil :zustimm: . Ich hätte nicht gedacht, dass das was bringt (beim dem Mist, den ich auf meinem PC habe). Vor allem gefällt mir der Ladebalken. Damit weiß ich genau, wie lange es noch dauert. Also: Weiter so.
Was vielleicht noch zu verbessern wäre: Ich wusste auf den ersten Blick nicht, welche Delphi-Version ich habe. Vielleicht könnte das in der readme (englisch :sad: ) noch irgendwo eingefügt werden.


alias5000 - Di 23.10.07 18:35

user profile iconRegan hat folgendes geschrieben:
Was vielleicht noch zu verbessern wäre: Ich wusste auf den ersten Blick nicht, welche Delphi-Version ich habe. Vielleicht könnte das in der readme (englisch :sad: ) noch irgendwo eingefügt werden.

Öhm, wie soll man das in die Readme des DelphiSpeedUp schreiben, welche Delphiversion du hast?
Die Version steht doch beim Splashscreen drauf...


Regan - Di 23.10.07 18:39

Bei mir steht auf dem Splashscreen "Turbo Delphi 2006". Wenn du dir die aktuellen Dateien herutnerlädst, dann steht in der readne:
Readme.txt hat folgendes geschrieben:

Simply start the InstallDelphiSpeedUpX.exe where X is your Delphi/BCB version.

Und die steht nicht auf dem Splashscreen. :wink: .


Kroko - Di 23.10.07 18:49

dann schau mal genau hin, :lol:


Regan - Di 23.10.07 18:53

user profile iconKroko hat folgendes geschrieben:
dann schau mal genau hin

Trotzdem kann ich nicht die Datei InstallDelphiSpeedUp10.exe wenn ich gar nicht weiß, dass ich Delphi 10 habe!?
Achso: Es steht nicht auf dem Splash, aber im Infoteil ganz versteckt.


Stefan-W - Di 23.10.07 19:00

ich hab das gleiche Problem gehabt, und auch über den Hinweis die Passende Version gefunden.

mir ist aber auch aufgefallen das gar kein anderes SpeedUp funktioniert... da bricht schon das Installationsprogramm kurz nach dem Starten ab


elundril - Di 23.10.07 21:40

kann man das eigentlich über die alte version drüberinstallieren oder muss man die alte Version entfernen??

lg elundril


Marc. - Di 23.10.07 21:50

Experimentieren geht über Studieren! :mahn: Ja, du kannst es einfach drüberinstallieren. ;)


elundril - Di 23.10.07 22:31

klar ich wollt schon immer mal meinen PC ruinieren! :-P Oder mein Delphi.

lg elundril


Stefan-W - Mi 24.10.07 06:34

no risk no fun...

ne mal im ernst SpeedUp ist ordentlich programmiert


toms - So 20.07.08 08:12
Titel: Version 2.78 - 2008-07-19
(Zitat von jbg aus der DP)
Es ist mal wieder so weit. DelphiSpeedUp 2.78 bringt neue Speed-Features und einen Bugfix mit sich.

Mich hat es immer schon genervt, dass bei größeren Projekten die Linker-Phase eine Ewigkeit dauert, wenn der Compiler eine detaillierte Map Datei erstellen soll, die man für den Stacktrace braucht. Ich habe da schon ungestützte Kommentare über die Verwendung von Bubblesort im Compiler an bestimmte Leute gerichtet. Schlussendlich kam heraus, dass die stricmp C-RTL Funktion so Grotten schlecht programmiert ist (und das seit 1994), dass einem davon nur Übel werden kann. Die neue optimierte stricmp Funktion ist im Durchschnitt um den Faktor 110 schneller. Jetzt weist auch der Quicksort im Compiler nicht mehr das Verhalten eines Bubblesort auf.

Eine andere Änderung betrifft das Problem dass man bei größeren Projekten aufpassen muss wohin man seine Maus schiebt. Steht sie über einem Bezeichner, fängt der Compiler erstmal an auf der Platte herumzurattern. Ein Abbrechen ist hierbei nicht möglich. Bis jetzt. DelphiSpeedUp 2.78 erlaubt es nun den Kibitz-Compiler (CodeInisght) und den Background Parser (HelpInsight) mit der ESC Taste abzubrechen. Zudem kann HelpInsight auch durch einen MouseMove abgebrochen werden.

Einen Bug in der Gallileo IDE behebt DelphiSpeedUp auch noch gleich. Der Background Parser kann unter gewissen Umständen (bei größeren Projekten vor allem) den MainThread blockieren. Das sollte mit Sicherheit nicht so ablaufen. Da dieser Bug nicht nur RAD Studio 2007 sondern auch die anderen Jahreszahl IDEs betrifft habe ich ihn vom IDEFixPack nach DelphiSpeedUp portiert. Die beiden Plugins können natürlich gemeinsam verwendet werden. Hierbei wird der Bug von dem Plugin behoben, das als ersten geladen wird (was selbstverständlich DelphiSpeedUp ist).


Zitat:
Version 2.78 - 2008-07-19
=========================
- Improved: Packages are loaded a little bit faster (Delphi/C++ 2005, 2006, 2007)
- Added: Delphi Compiler's C RTL optimizations (much faster map file creation)
- Added: Background Parser now stops if the main thread wants to do something with the compiler. (Delphi/C++ 2005, 2006, 2007),
- Added: CodeCompletion can be aborted by pressing ESC
- Added: HelpInsight can be aborted by moving the mouse or pressing ESC.


Download und Homepage [http://andy.jgknet.de/dspeedup]

Download von CodeCentral [http://cc.codegear.com/Author/54776]


Regan - So 20.07.08 14:18
Titel: Re: Version 2.78 - 2008-07-19
user profile icontoms hat folgendes geschrieben:
Eine andere Änderung betrifft das Problem dass man bei größeren Projekten aufpassen muss wohin man seine Maus schiebt. Steht sie über einem Bezeichner, fängt der Compiler erstmal an auf der Platte herumzurattern. Ein Abbrechen ist hierbei nicht möglich. Bis jetzt. DelphiSpeedUp 2.78 erlaubt es nun den Kibitz-Compiler (CodeInisght) und den Background Parser (HelpInsight) mit der ESC Taste abzubrechen. Zudem kann HelpInsight auch durch einen MouseMove abgebrochen werden.

Vielen Dank. Das hat mich schon immer gestört. Vielen, vielen Dank.


D2505 - Mi 29.12.10 15:02

was soll man bei start paramrameter -r eingeben


D2505 - Fr 31.12.10 15:43

Kann mir keiner sagen Was man bei der Installation eingeben muss im edit :wink: start parameter -r


elundril - Fr 31.12.10 21:45

Gar nix? Wie ich das letzte mal das installiert habe, hab ich einfach nur die installations-exe ausführen müssen und das wars.

Lg elundril


D2505 - Sa 01.01.11 17:31

welche version hattest du ?


Martok - Sa 01.01.11 19:11

Du kennst aber das Konzept "Hint", zu deutsch meistens "Kurzhinweis"? Die Dinger, die erscheinen wenn man die Maus kurz über einem Control stehen lässt?
Hint im Installer hat folgendes geschrieben:
IDE registry subkey. If you don't know what this is about, then don't change it.


Alles klar?


D2505 - So 02.01.11 15:38

Ok klappt jetzt auf einmal :gruebel: gestern aber nicht :nixweiss: