nanosecondes à millisecondes - division rapide par 1000000
Je suis désireux de convertir la sortie d'gethrtime de millisecondes.
Le moyen le plus évident pour ce faire est de diviser par 1000000.
Toutefois, je le fais assez souvent et je me demande si il pourrait devenir un goulot d'étranglement.
Est-il optimisé opération de division lorsque vous traitez avec des chiffres comme 1000000?
Remarque: le code doit être portable. Je suis à l'aide de gcc et c'est généralement sur le matériel Sparc
Certains le test rapide à l'aide du code ci-dessous... j'espère que c'est juste.
#include <sys/time.h>
#include <iostream>
using namespace std;
const double NANOSECONDS_TO_MILLISECONDS = 1.0 / 1000000.0;
int main()
{
hrtime_t start;
hrtime_t tmp;
hrtime_t fin;
start = gethrtime();
tmp = (hrtime_t)(start * NANOSECONDS_TO_MILLISECONDS);
fin = gethrtime();
cout << "Method 1"
cout << "Original val: " << start << endl;
cout << "Computed: " << tmp << endl;
cout << "Time:" << fin - start << endl;
start = gethrtime();
tmp = (start / 1000000);
fin = gethrtime();
cout "Method 2"
cout << "Original val: " << start << endl;
cout << "Computed: " << tmp << endl;
cout << "Time:" << fin - start << endl;
return 0;
}
Exemple sorties:
Original val: 3048161553965997
Computed: 3048161553
Time:82082
Original val: 3048161556359586
Computed: 3048161556
Time:31230
Original val: 3048239663018915
Computed: 3048239663
Time:79381
Original val: 3048239665393873
Computed: 3048239665
Time:31321
Original val: 3048249874282285
Computed: 3048249874
Time:81812
Original val: 3048249876664084
Computed: 3048249876
Time:34830
Si cela est correct, puis les multiples de réciprocité qui est en fait plus lentement dans ce cas. C'est probablement dû à l'utilisation de calcul en virgule flottante au lieu de point fixe de mathématiques. Je vais juste coller à la division entière puis qui prend toujours peine le temps à tous.
source d'informationauteur Matt
Vous devez vous connecter pour publier un commentaire.
Division est pas une opération coûteuse. Je doute si une division par 1000000 opération va être n'importe où près le principal goulet d'étranglement dans votre application. Virgule flottante processeurs de façon plus rapide que n'importe quel genre de "trucs" que vous pouvez venir avec de le faire simplement la seule opération.