GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi mon chat fonctionne-t-il plus lentement avec les appels système que le chat de Linux ?

Ah, sur la base de votre modification, vous étiez mordu par le tampon de lecture anticipée. Vous ne pouvez pas tester deux programmes qui lisent des fichiers côte à côte en les exécutant une seule fois. Le premier sera toujours plus lent puisque le fichier est sur le disque, une fois que le fichier est en mémoire, le second s'exécutera plus rapidement, vous devez soit créer de nouvelles données pour chacun, soit en exécuter un, puis exécuter les deux afin qu'ils bénéficient tous les deux du tampon de lecture anticipée.


Peut-être avez-vous compilé sans optimisation (ou sans paramètre d'optimisation aussi élevé) ?

De plus, votre code s'appellera sysWriteBuffer une fois avec readBytes égal à zéro - peut-être que cela l'explique (partiellement) ?

Vous pouvez également utiliser sysWriteBuffer en ligne (soit via un commutateur de compilateur, soit à la main).

"inlining" signifie copier le corps d'une fonction sur son site d'appel afin de supprimer la surcharge liée à l'appel d'une fonction. Parfois, les compilateurs le font automatiquement (je pense que -O3 active cette optimisation dans gcc). Vous pouvez également utiliser le inline mot-clé dans gcc pour indiquer au compilateur d'intégrer une fonction. Si vous faites cela, votre déclaration ressemblera à ceci :

static inline int sysWriteBuffer(int fdout, char *buffer, ssize_t readBytes) {
....

Recherche mmap(2).

Vous allez jeter les subtilités de ftell/fread, mais cela sautera une couche d'indirection si le débit de lecture est vraiment important.


Linux
  1. Surveillez votre système Linux dans votre terminal avec procps-ng

  2. Comprendre les appels système sous Linux avec strace

  3. Équilibrer la sécurité Linux avec la convivialité

  4. Linux - Surveillance à l'échelle du système des appels à une fonction de bibliothèque ?

  5. 13 appels système Linux de base expliqués à l'aide d'un programme antivirus Linux amusant

Commande de disponibilité Linux avec exemples

Utilisation de la commande Cat sous Linux avec des exemples

Premiers pas avec le système d'exploitation Linux

Trouver des informations sur le matériel du système Linux avec Hwinfo

Comment afficher les statistiques du système Linux avec Saidar

Qu'est-ce que les appels système Linux et les fonctions de bibliothèque ?