Schrift
[thread]6550[/thread]

Programmstart nach kompilieren sehr langsam

Leser: 1


<< >> 8 Einträge, 1 Seite
Alexfo85
 2004-09-01 02:56
#49736 #49736
User since
2004-08-18
20 Artikel
BenutzerIn
[default_avatar]
Hi Leuts,

Wenn ich Programme mit pp compiliere, dauert der Programm start dannach ewig...

Egal welches Programm, auch wenns nur ganz einfache Programme wie hallo welt sind...
Diese haben dann schon 7 MB im Arbeitsspeicher...

Etwas ausführlichere haben dann gleich schon 20 MB....

Wenn ich versuche diese Programme auf einem Celeron 500 zu starten brauchen sie teils bis zu 40s...

Kennt da jemand Tweaks? Woran liegt des? Habe mal versucht alle möglichen Subs rauszuhaun um zu testen obs an irgendwelchen schlecht Programmieren routinen von mir liegt... habe aber langsam den Verdacht des liegt daran das des komplette Perl da mit compiliert wird... und dann in der exe erst geladen werden muss...

Mal neen Code Example aus nem TK Proggi:
Des Haupt-Problem hierbei:
Des Programm läd ewig (30-40s), dann kommt der Splash-Screen(max 3s) und der geht auch gleich wieder weg und Proggi ist da.. gibts da nee Möglichkeit das die lange ladezeit mal wirklich durch den Splash überbrückt wird?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
BEGIN
{
  use strict;
  use vars qw( $mw $menu $mwm $splash
$bgcolor $benutzer $benutzername $werte
                $file
);
  use Tk;
  use Tk::JPEG;

     if (!$^C && !$^P)
     {
       require Tk::Splash;
       $splash = Tk::Splash->Show("data/loader.jpg", 755, 113, "Wird geladen", 1);
     }
}

&main;  

sub main
{
   ... # 15 weitere Module Laden
   &mainwindow;
}

sub mainwindow
{
 $mw = MainWindow->new(-background => $$bgcolor{main});
 $mw->title("Blutwert-Analizer");

 my  $windowHeight  = "600";
 my  $windowWidth   = "775";
 my  $screenHeight  = $mw->screenheight();
 my  $screenWidth   = $mw->screenwidth();
 $mw->geometry($windowWidth . 'x' . $windowHeight .
                        '+' . int($screenWidth/2 - $windowWidth/2) .
                        '+' . int($screenHeight/2 - $windowHeight/2)
                     );
 $mw->resizable( 0, 0 );
 $mw->protocol('WM_DELETE_WINDOW', \&ExitApplication);
}


Vielleicht kennt sich ja wer aus/ hat nee Idee...
Oder weis wie man des testen kann, was wie lange in der Exe läd...

Grüße Alex
ptk
 2004-09-01 13:15
#49737 #49737
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Welches Betriebssystem? Also ich habe gerade mit deinem Snippet zum ersten Mal PAR versucht und bin ueberrascht, wie reibungslos das geht. Das compilierte Programm startet auch sehr zuegig (weniger als eine Sekunde bis zum Splash), das ist allerdings auch ein 2GHz-Rechner hier.
Alexfo85
 2004-09-01 14:48
#49738 #49738
User since
2004-08-18
20 Artikel
BenutzerIn
[default_avatar]
Naja ich arbeite hier zum Programmieren auch an nem 2,5 ghz... da ist das ganze Kein problem... des Programm sollte aber aber 500 Mhz laufen...

OS: winxp...

Was ich vorallem so stark verwundert hat ist der rießige Speicherverbrauch...
esskar
 2004-09-01 14:52
#49739 #49739
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Alexfo85,01.09.2004, 12:48]Was ich vorallem so stark verwundert hat ist der rießige Speicherverbrauch...[/quote]
das liegt daran, dass der PAR nichts anderes tut als beim compilieren, den sourcecode und den perl interpreter in eine exe zu packen; beim start des exe wird beides im speicher entpackt und dann wird der interpreter auf den entpackten quellcode losgelassen... deswegen der speicherverbrauch!
pq
 2004-09-01 15:30
#49740 #49740
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also bei mir starten kompilierte skripte zwar etwas
langsamer, aber die verzögerung ist doch sehr
gering (1,8 GHz Athlon, linux)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2004-09-01 15:51
#49741 #49741
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Das mit dem Speicherverbrauch wundert mich... eigentlich muesste ja erst einmal nur das augepackt werden, was beim "use" oder "require" gebraucht wird (also nicht unbedingt alles), und das Ausgepackte kann nach dem Kompilieren wieder weggeworfen werden.
Alexfo85
 2004-09-01 23:23
#49742 #49742
User since
2004-08-18
20 Artikel
BenutzerIn
[default_avatar]
pq... sind ja alles schnelle Rechner mit denen hier gearbeitet wird da fällts denke ich net so auf... aber auf den langsameren finde ich es schon krass....

Zu meiner anderen Frage weis warscheinlich keiner was... wie man des testen kann wo des wie lange läd nach dem kompilen?
pq
 2004-09-02 02:50
#49743 #49743
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Alexfo85,01.09.2004, 21:23]Zu meiner anderen Frage weis warscheinlich keiner was... wie man des testen kann wo des wie lange läd nach dem kompilen?[/quote]
du willst testen, welche module/dateien geladen werden?
ich hab PAR.pm neulich mal debugged und dabei auch die
stelle, in der dateien aus dem par-file extrahiert werden (bzw.
die stelle, an der die extrahierte tmp-datei require()d wird)
vielleicht find ich das noch...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 8 Einträge, 1 Seite



View all threads created 2004-09-01 02:56.