IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Optimisation du code


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Albanie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Optimisation du code
    Voila en ce moment la je travaille sur un projet qui consiste a :

    Vérifiez la mémoire vive du système, à partir de là déterminer la taille maximale des fichiers qu'il peut gérer. (suggérer 10-20% de la fréquence max de RAM) Si le fichier est plus grand que la taille de fichier maximale, fractionnés automatiquement en fichiers temporaires et les utiliser.

    donc voici la demarche:

    Ouvrir le fichier
    Vérifier la quantité de lignes définissent comme [lignes]
    Crée un tableau [lignes]
    Chargez toutes les urls dans un tableau
    fermer le fichier

    split.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    / *
    split.c accueillera les fonctions pour découper les fichiers d'entrée qui sont trop grands.
    Cela devrait garder l'utilisation de la mémoire faible.
    Taille du fichier(FileSize) max est déterminé par l'entrée d'utilisateur (-m 4096) ou par le programme lui-même s'il n'est pas spécifié
    * /
     
    #include <split.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <Windows.h>
     
    int fileSize ( char File[] ); //int pour stocker la taille du fichier
    void fileNameExt ( char Name[], char Ext[], char File[] );
     
    int splitmain( int argc, char *argv[] ) //méthode principale
    {
    FILE *source, *destination; //définir source et la destination des pointeurs de fichiers 
    int size, parts; //int pour la taille du fichier de sortie et la quantité de fichiers de sortie
    char name[100], ext[100], aux[100];
     
    if( argc < 3 ) //vérifier combien de args ont été entrés
    {
    printf( "Il n'y a pas suffisamment de args!" ); 
    system( "pause" ); 
    return 0;
    }
     
    fileNameExt( name, ext, argv[1] );
    parts = atoi( argv[2] );
     
    size = fileSize( argv[1] ); //taille variable = filesize de arg1, le fichier d'entrée.
    if( (source = fopen(argv[1], "rb")) == NULL ) //si fopen renvoie NULL le fichier n'est pas présent, les fichiers vides commence par \ n?
    {
    printf( "Erreur! Fichier source n'a pas pu être ouvert!" );
    system( "pause" );
    return 0;
    }
     
     
    for( int i = 0; i < parts; i++ ) //jusqu'à int i est le même que les parties int, boucle.
     
    sprintf( aux, "%s%s-%d", name, ext, i );
    printf( "Generating %s file! -- ", aux );
     
    if( (destination = fopen(aux, "wb")) == NULL ) //si le fichier de destination fopen renvoie NULL alors il n'ya pas de sortie
    {
    printf( "Errer! fichier de destination %s n'a pas pu etre cree!", aux ); 
    system( "pause" );
    return 0;
    }
     
    char car = getc( source );
    for( int j = 0; j < size/parts && !feof(source); j++ )
    {
    putc( car, destination );
    car = getc( source );
    }
     
    printf( "OK!
    " );
    fclose( destination );
    }
     
    fclose( source );
    system( "pause" );
    return 0;
    }
     
    int fileSize( char File[] ) //calculer la taille du fichier
    {
    FILE *f; //initier pointeur du fichier
     
    if( (f = fopen(File,"rb")) == NULL ) //si fopen renvoie NULL le fichier n'est pas présent, les fichiers vides commence par \n?
    {
    printf( "Erreur! Fichier source n'a pas pu être ouvert!" ); 
    system( "pause" );
    return 0;
    }
     
    fseek( f, 0,SEEK_END ); 
    int sz = ftell(f);
    fclose( f );
     
    return sz;
    }
     
    void fileNameExt( char Name[], char Ext[], char File[] )
    {
    char *aux;
    if( (aux = strrchr(File, '')) == NULL )
    {
    if( (aux = strrchr( File, '/' )) == NULL)
    {
    aux = File;
    }
    }
     
    if( aux != File )
    {
    aux++;
    }
     
    for( int i = 0; *aux != '.'; i++, aux++ )
    {
    Name[i] = *aux;
    Name[i+1] = '\0;';
    }
     
    for( int i = 0; *aux != '\0;'; i++, aux++ )
    {
    Ext[i] = *aux;
    Ext[i+1] = '\0';
    }
    }
    split.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #ifndef SPLIT_H_INCLUDED
    #define SPLIT_H_INCLUDED
     
    /* Prototypes des fonctions */
    /* split main() */
    int splitmain( int argc, char *argv[] );
     
    /* calculer la taille de fichier */
    int fileSize( char File[] );
     
    /* */
    void fileNameExt( char Name[], char Ext[], char File[] );
     
    #endif
    defhaze.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    #include <conio.h>
    #include <dos.h>  
    #include <process.h>   
    #include <stdio.h> 
    #include <split.h> 
     
        int main(int argc, char *argv[])
        {  
            printf(" /*****Bienvenu a De(f)haze*****\ \n");
            printf(" |			        | \n");
            printf(" |       Fait par Luloo         | \n");
            printf(" |                              | \n");
            printf(" |                              | \n");
            printf(" \*****--------------------*****/ \n");
            int suc6 = 0;
            loadfile();
     
            return 0; 
         } 
     
          int loadfile() //Méthode pour charger le fichier d'entrée dans un tableau
          {
            inputfile = ; //attribuer une valeur à fichier d'entrée
    	FILE *fpinput; //définir pointeur du fichier d'entrée
            fpinput=fopen(“&inputfile”, ”r”); //ouvrir le fichier d'entrée avec mode "r", lecture seule(read only)
            //fp = fopen("filename.txt", "r");
    	printf("Le comptage et la collecte des urls ... \n"); 
     
    	while((fgets(fp)) != NULL) //tandis que la rangée / ligne ne renvoie pas NULL (espace ou \n !=NULL), urls++
             {
               urls++;
             }  
            return 0;
      }
     
            for(int i=0; i<urls; i++) //tandis que i est inférieur au montant des urls, tourne en boucle
            fscanf(fp, "%d %s\n", &UrlArr[i]); //ajouter une ligne au tableau
    	fclose(fpinput); //fermez le fichier puisque les urls sont déjà dans le tableau
          }
     
    /*
    Méthode Append ajoutera les injections réussies dans le fichier de sortie si dans le cas d'un crash ou quoi que vous aurez toujours vos injections réussies
    */
     
    int apppend()
    {
     
    FILE *fpoutput; //définir pointeur du fichier de sortie
    fpoutput = fopen("output.txt", "a"); //Inclure dans le fichier de sortie
     
    if (suc6 <1)
    {
    struct date d;
    getdate(&d); 
    fwrite("fpoutput", "De(f)haze started [%d/%d/%d",d.da_day,d.da_mon,d.da_year]\n");
    fwrite("fpoutput", "Codee par Luloo \n");
    }
     
    }
    voila mon probleme cest que je trouve que mon code est un peu mal structure et incomplet

    donc en gros, jaimerai avoir quelques idees concernant l'optimisation de mon code et si possible corriger quelques fautes

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Je pense que la première chose à faire serait d'indenter ton code

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour

    Et puis à la fin, ce truc me fait douter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fwrite("fpoutput", "De(f)haze started [%d/%d/%d",d.da_day,d.da_mon,d.da_year]\n");
    fwrite("fpoutput", "Codee par Luloo \n");
    }
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour

    Et puis à la fin, ce truc me fait douter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fwrite("fpoutput", "De(f)haze started [%d/%d/%d",d.da_day,d.da_mon,d.da_year]\n");
    fwrite("fpoutput", "Codee par Luloo \n");
    }
    Oui, là ce n'est même plus un doute, c'est une certitude : cela ne peut marcher que si l'on vire les guillemets autour de fpoutput et que l'on remplace le fwrite par un fprintf (et puis une petite modification de la ... chaîne !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fprintf(fpoutput, "De(f)haze started [%d/%d/%d]\n",d.da_day,d.da_mon,d.da_year);
    fprintf(fpoutput, "Codee par Luloo \n");

    Et puis - Oula ! - il faut penser à doubler les anti-slashes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            printf(" /*****Bienvenu a De(f)haze*****\\ \n");
            printf(" |			        | \n");
            printf(" |       Fait par Luloo         | \n");
            printf(" |                              | \n");
            printf(" |                              | \n");
            printf(" \\*****--------------------*****/ \n");

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo