nach kompiliervorgang, erster Programm start dauert 5 min



  • Guten Tag,

    wie der Titel schon sagt braucht nach dem Kompiliervorgang das Programm sehr lange zum Starten (5 min - tritt nur beim 1. Programmstart auf).
    Was kann ich dagegen unternehmen?

    Verwende Dev C ++ 4.9.9.2 unter Windoof 😉 danke.



  • pc mit schnellerem prozessor kaufen, oder den grund im quellcode suchen (debuggen).
    🙂



  • Am Prozessor liegt es sicher nicht 😉 es ging früher immer. Ist erst seit neuestem nach dem Kompilieren, und zwar bei jedem Programm 😞



  • Du solltest lieber den in Microsoft Visual C++ 2010 enthaltenen Compiler benutzen anstatt Mingw. Produziert besseren Code unter Windows.



  • Janjan schrieb:

    Du solltest lieber den in Microsoft Visual C++ 2010 enthaltenen Compiler benutzen anstatt Mingw. Produziert besseren Code unter Windows.

    MSVC kann man vergessen. Microsoft macht keine Anstalten, den aktuellen C-Standard zu unterstützen, und irgendwelche für Unix gedachten C-Bibliotheken mit MSVC zu nutzen ist auch oft ein ziemlicher Krampf.

    Dev-C++ ist aber auch veraltet, am besten nimmt man unter Windows MSYS+MinGW und z.B. Code::Blocks.



  • Ja das Problem ist wird nutzen das in der Schule auch, in der Schule geht das ganz normal.
    Bei einem Freund auf dem Lappi gehts auch ganz normal. Mein Lappi läuft schneller als seiner und hat auch bessere Ausstattung 😉
    Es ist halt nur das Problem beim ersten Programmstart.



  • Obli schrieb:

    Am Prozessor liegt es sicher nicht 😉 es ging früher immer. Ist erst seit neuestem nach dem Kompilieren, und zwar bei jedem Programm 😞

    Bei jedem Programm? Du kompilierst das klassische Hello World Programm und die Startzeit ist 5 Minuten?
    💡 Dann wird wohl etwas mit deinen Systemdateien faul sein. 💡



  • Obli schrieb:

    Guten Tag,
    wie der Titel schon sagt braucht nach dem Kompiliervorgang das Programm sehr lange zum Starten (5 min - tritt nur beim 1. Programmstart auf).
    Was kann ich dagegen unternehmen?
    Verwende Dev C ++ 4.9.9.2 unter Windoof 😉 danke.

    Nicht Windoof sagen. Denn mit solchen Kiddie-Parolen bekommst Du von den Fachleuten, die Du brauchst, keine Antwort mehr.



  • Tut mir leid, Windows 😃

    Also vllt nicht bei jedem, aber ab ca 100 Zeilen.
    Sehr arg ist es beim BinBaum, wobei der bei anderen Rechnern sehr schnell ausgeführt wird.

    #include <stdio.h>
    #include <windows.h>
    
    #define CLS system("CLS");
    
    struct Knoten{
           Knoten *l;
           int w;
           Knoten *r;
    };
    
    void insert(Knoten **b, int wert);
    void inorder(Knoten *b);
    void preorder(Knoten *b);
    void postorder(Knoten *b);
    
    int suchen(Knoten *b, int wert);
    
    Knoten **such(Knoten**,int);
    int delet(Knoten**,int);
    Knoten** suchkl(Knoten**);
    
    int main()
    {
        Knoten *root=NULL;
        int d=1, menu;
    
        while(d!=0)
        {
            printf("Bitte Wert (0 = Beenden): ");
            scanf("%d",&d);
            if(d!=0)
            insert(&root,d);
        }
        getchar();
        CLS
    
        do
        {
            CLS    
            printf("1.) Suchen im Baum\n");
            printf("2.) inorder-Traverse\n");
            printf("3.) preorder-Traverse\n");
            printf("4.) postorder-Traverse\n");
            printf("5.) Loeschen eines Elementes\n");
            printf("0.) Beenden\n");
            printf(">> ");          
            scanf("%d",&menu);
            printf("\n");
            switch(menu)
            {
                    case 1:
                        printf("Welcher Wert soll gesucht werden: ");
                        scanf("%d",&d);
    
                        suchen(root,d);
    
                        if(suchen(root,d))  
                            printf("Wert gefunden\n");
                        else
                            printf("Wert nicht gefunden\n");
                        break;
    
                    case 2:
                        inorder(root);
                        break;
                    case 3:
                        preorder(root);
                        break;
                    case 4:
                        postorder(root);
                        break;
                    case 5:
                        printf("Welcher Wert soll geloescht werden: ");
                        scanf("%d",&d);
    
                        if(delet(&root,d))
                            printf("Wert geloescht\n");
                        else  
                            printf("Wert zum loeschen nicht gefunden\n");
                        break;
            }
            stdin->_cnt=0;      
            getchar();                
    
        }while(menu != 0);
    
    }
    
    void insert(Knoten **b, int wert)
    {
    
        if(*b==NULL)
        {
            *b=(Knoten *) malloc(sizeof(**b));
            (*b)->w=wert;
            (*b)->l=NULL;
            (*b)->r=NULL;
        }
        else
        {
            if(wert < (*b)->w)
                insert(&((*b)->l), wert);
            else
                insert(&((*b)->r), wert);
        }
    }
    
    void inorder(Knoten *b)
    {
         if(b==NULL)
         return;
    
         inorder(b->l);
         printf("%d\n",b->w);
         inorder(b->r);   
    }
    
    void preorder(Knoten *b)
    {
         if(b==NULL)
         return;
    
         printf("%d\n",b->w);
         preorder(b->l);
         preorder(b->r);
    }
    
    void postorder(Knoten *b)
    {
         if(b==NULL)
         return;
    
         preorder(b->l);
         preorder(b->r);
         printf("%d\n",b->w);
    }
    
    int suchen(Knoten *b, int wert)   // 
    {
        if(b == NULL)
            return 0;
        else
        { 
            if(wert == b->w){
                return 1;
            }
            if(wert < b->w && b->l!=NULL){         
                return (suchen(b->l,wert));
            }
            if(wert > b->w && b->r!=NULL){
               return (suchen(b->r, wert));
            }
            else{
                return 0;
            }
        }
    }
    
    Knoten **such( Knoten **b, int val ){
    	while( *b!=NULL ){
    		if ( val == (*b) -> w )
    			return b;
    		else
    			if ( val < (*b) -> w )
    				b = &((*b) -> l);
    			else
    				b = &((*b) -> r);
        }
        return b;
    }
    
    Knoten** suchkl(Knoten **b)
    {
        while (*b!=NULL)
        {
            if((*b)->l!=NULL)
                b=&(*b)->l;
            else
                return b;
        }
        return b;
    }
    
    int delet ( Knoten ** b, int val)
    // Ret 1 wenn val vorhanden sonst 0
    {
    	Knoten ** zz; // ZZeiger auf gef wer gefunden (val)
    	Knoten ** zzkl; // ZZeiger auf kl El im Unterbaum val zz
    	Knoten *del; // Zeigt auf den zu löschenden Knoten
    
    	zz = such(b,val);
    	if ( *zz == NULL )
    		return 0;	//1 gef kann löschen
    	if( (*zz) ->l == NULL) 	//li UB leer od Blattel
    		*zz = (*zz) -> r;		
    	else
    		if( (*zz) -> r == NULL)
    			*zz = (*zz) -> l;		
    		else{
    			zzkl = suchkl (&(*zz) -> r);
    			del = *zzkl;
    			(*zz) -> w = (*zzkl) -> w;	
    			(*zzkl) = (*zzkl) -> r;		
    		}
        free(del);
        return 1;						
    }
    


  • Ist es auch langsam, wenn Du auf dem USB-Sick compilierst und ausführst?



  • Ja gerade ausprobiert, dauert auch sehr lange.



  • Obli schrieb:

    Ja gerade ausprobiert, dauert auch sehr lange.

    Dann liegt das scheinbar an dem Compiler. Einfacher als jetzt eine grosse Analyse zu starten, ist wohl, das Ding einfach mal neu zu installieren.
    🙂



  • Das hab ich gemacht bevor ich hier gepostet habe 🙂



  • Das ist kein C, sondern ein abartiger C und C++ Mix.



  • Wenn das Programm als EXE vorliegt startet es beim 1.Mal langsam und die weiteren male zügiger?

    Das liest sich aber nicht nach einem Compiler-Problem ⚠

    Oh das Kristallkugelsmilie,
    hast du weniger Speicher auf deinem Rechner, als auf den anderen wo das fixer geht? Funktioniert der Speicher zuverlässig Ram + Festplatte? Hast du bei deinem Betriebssystem relativ viele Programme/Prozesse gleichzeitig am rödeln? Mal alles was nur der Schönheit oder dem Komfort dient deaktivieren und dann dein Programm das 1.Mal starten. Ändert sich was?

    Viel Spass bei der Fehlersuche 😃
    f.-th.



  • Festplattenspeicher:
    Habe noch 100gb frei von 250gb.

    Genau beim 1. Mal ists total lahm, ab dem 2 Start läufts wie bei den anderen.

    Windows 7, 47 Prozesse am Laufen, CPU Auslastung 7%.
    Das System läuft total rund 😃



  • Obli schrieb:

    Festplattenspeicher:
    Habe noch 100gb frei von 250gb.

    Genau beim 1. Mal ists total lahm, ab dem 2 Start läufts wie bei den anderen.

    Windows 7, 47 Prozesse am Laufen, CPU Auslastung 7%.
    Das System läuft total rund 😃

    Hups paar Ausdrucksfehler 😃
    Edit:
    Habe noch 100gb frei von 250gb.

    Genau, beim 1. Mal ists total lahm, ab dem 2 Start läufts wie bei den anderen Rechnern.

    Windows 7, 47 Prozesse am Laufen, CPU Auslastung 7%.
    Das System läuft total rund 😃



  • Obli schrieb:

    Genau beim 1. Mal ists total lahm, ab dem 2 Start läufts wie bei den anderen.

    Das kann viel sein. Vielleicht ein dummer Virenscanner?
    🙂



  • ja, wenn der Spass in deiner CPU und ihrem Chache ist, rennt das ja wie du schreibst 😉 Auf dem Weg dahin, in den CPU-Chache, klemmt das wahrscheinlich.

    MfG f.-th.



  • Konnte das Problem leider noch immer nicht lösen 😞

    f.-th. Ja das könnte hinkommen.
    Nur was soll ich dagegen unternehmen?



  • Schau dir mal deine 47 Prozesse genau an und schliesse alles was deine Nordbrücke und Südbrücke, oder wie die Dinger heute bezeichnet werden, von der sofortigen Ausführung deines Programms abhalten können.Also alle Fenster zu bis auf den Dateimanager, oder was bei dir installiert ist oder du nutzen möchtest.
    Dann PC neustarten und schauen ob das bisher geklappt hat.
    Dann deine Exe starten.
    Wenn das immer noch im Schneckentempo geht, prüfe mit entsprechenden Programmen auf Viren oder sonstigen Kram - das sollte von einer entsprechend angefertigten startfähigen CD oder DVD durchgeführt werden.

    Dann kannnst du auch mal Hardwarediagnoseprogramme auf deinen PC loslassen ob da Auffälligkeiten sind. Oh je, wie hiessen die? Everest, Aida, Sandra u.s.w. einige von denen dürften auf neueren PC nicht mehr alles korrekt erkennen - mach dich schlau 😉

    Und nachdem du alles sorgfälltig ausgewertet hast und du nix auffälliges gefunden hast - nach Datensicherung - Neuinstallation deiner Festplatte oder, wenn du noch eine zum Testen hast, nimm die erst.

    Soweit die Kurzfassung 🤡

    Viel Spass bei der Diagnose 😃
    f.-th.


Anmelden zum Antworten