Articles of performance

Temps d’access inférieur inattendu dans un scénario à plusieurs processus par rapport à un scénario à un seul processus

J’accède à une bibliothèque partagée (structure de données de tableau partagé) à partir de programme1 et trouve le temps d’access pour lire tous les éléments de ce tableau. J’ai eu environ 17 000 ticks alors que seul Program1 était exécuté seul. Maintenant, quand j’exécute le programme2 (ayant une boucle while vide pour le tenir de […]

Pourquoi la version multithread de ce programme est-elle plus lente?

J’essaie d’apprendre des pthreads et j’ai expérimenté un programme qui essaye de détecter les changements sur un tableau. La fonction array_modifier() choisit un élément aléatoire et bascule sa valeur (1 à 0 et vice versa) puis dort pendant un certain temps (assez grand pour que les conditions de course n’apparaissent pas, je sais que c’est […]

Pourquoi utiliser mod avec l’opérande int64_t rend cette fonction 150% plus lente?

La fonction max_rem calcule le maximum de rest que (a+1)^n + (a-1)^n rest divisé par a² pour n = 1, 2, 3… La main appelle max_rem tous les 3 à 999 . Code complet: #include #include int max_rem(int a) { int max_r = 0; int m = a * a; // <——– offending line int […]

Que signifie l’avertissement OProfile ‘prélèvement d’un échantillon d’hyperespace’?

Lorsque vous utilisez le profileur d’exécution statistique OProfile pour visualiser un profil de graphique d’appel pour mon application C, il inclut plusieurs fois l’avertissement suivant. L’avertissement est plutôt cryptique pour moi: warning: dropping hyperspace sample at offset 1af9 >= 2be8 for binary /home/myuser/mybinary J’utilise OProfile dans un environnement virtualisé Xen comme ceci: modprobe oprofile timer=1 […]

En quoi la complexité temporelle est-elle différente?

Est-ce que cela fait gagner du temps si la valeur est d’abord stockée puis utilisée? Par exemple; while(i<strlen(s)) //code et int n = strlen(s); while(i<n) //code La complexité temporelle est-elle plus faible pour la deuxième méthode car la valeur de retour de la fonction est d’abord stockée puis utilisée, évitant ainsi d’appeler la fonction à […]

Comment puis-je limiter la vitesse de la prise en C?

Dupliquer possible: Comment limiter la bande passante d’une connexion socket en C? J’écris un simple serveur FTP en C pour un environnement Unix. En tant que fonctionnalité du serveur, je souhaite limiter la vitesse de téléchargement d’un utilisateur. Existe-t-il des fonctions de bibliothèque qui résolvent directement ce problème? Sinon, quel est l’algorithme utilisé sur un […]

Est-ce que struct avec un seul membre a les mêmes performances qu’un type de membre?

Est struct ce que struct avec un seul membre a les mêmes performances qu’un type de membre (utilisation de la mémoire et vitesse)? Exemple : Ce code est une struct avec un seul membre: struct my_int { int value; }; la performance de my_int même que int ?

Est-ce que je viens de prouver que le tamis d’Eratosthenes est moins efficace que la division d’essai?

J’essayais de comparer la vitesse d’exécution de deux algorithmes: un programme en force brute C pour imprimer des nombres premiers (10 000 nombres) et un programme Sieve of Eratosthenes C (également 10 000 nombres premiers). Mon temps d’exécution mesuré pour l’algorithme tamis était: 0,744 seconde Mon temps d’exécution mesuré pour l’algorithme de force brute était […]

Une commande d’assemblage mal générée par gcc se traduit par une baisse des performances

J’ai le code suivant, qui copie les données de la mémoire dans la mémoire tampon DMA: for (; likely(l > 0); l-=128) { __m256i m0 = _mm256_load_si256( (__m256i*) (src) ); __m256i m1 = _mm256_load_si256( (__m256i*) (src+32) ); __m256i m2 = _mm256_load_si256( (__m256i*) (src+64) ); __m256i m3 = _mm256_load_si256( (__m256i*) (src+96) ); _mm256_stream_si256( (__m256i *) (dst), […]

Compter le nombre de chiffres d’un nombre à virgule flottante

Existe-t-il un moyen efficace (sans convertir le float en chaîne) d’obtenir le nombre de chiffres composant un nombre à virgule flottante (indépendamment de sa longueur et de sa précision)? De cette manière, je peux implémenter une fonction de comparaison / conditionnement sans problème, portable et sans problème, en multipliant le nombre float par le nombre […]