LINUX.ORG.RU

Тестируем процы!


0

0

Сразу оговорю (чтоб камни большие не брали), что ops - не число операций в секунду в данном случае. Мой результат: с иксами - от 333333333.33 без иксов - 38461538.56 Почему ops умножаем на 1000? Просто так. Чтобы никто не думал, что это - оп./сек. #include <stdio.h> #include <sys/time.h>

struct timeval inital, final; struct timezone tz; long i,ii,iii; double ops; double seconds;

main() { gettimeofday(&inital,&tz); for(iii=0;iii<100;iii++) for(ii=0;ii<10000;ii++) for(i=0;i<10000;i++); gettimeofday(&final,&tz); seconds = (final.tv_sec - inital.tv_sec) + 100000/(final.tv_usec - inital.tv_usec); ops = 1000000/seconds; ops*=1000; printf("inital:\n\r%ld:%ld\nfinal:\n\r%ld:%ld\ntotal:\n\r%7.2f\nops:\n\r%7. 2f\n",inital.tv_sec,inital.tv_usec,final.tv_sec,final.tv_usec,seconds,ops); }

★★

#include <stdio.h>
#include <sys/time.h>

struct timeval inital, final;
struct timezone tz;
long i,ii,iii;
double ops;
double seconds;

main()
{
gettimeofday(&inital,&tz);
for(iii=0;iii<100;iii++)
for(ii=0;ii<10000;ii++)
for(i=0;i<10000;i++);
gettimeofday(&final,&tz);
seconds = (final.tv_sec - inital.tv_sec) + 100000/(final.tv_usec - inital.tv_usec);
ops = 1000000/seconds;
ops*=1000;
printf("inital:\n\r%ld:%ld\nfinal:\n\r%ld:%ld\ntotal:\n\r%7.2f\nops:\n\r%7. 2f\n",inital.tv_sec,inital.tv_usec,final.tv_sec,final.tv_usec,seconds,ops);
}

drish ★★
() автор топика

Мне кажется лучше мерить в стандарнтных единицах, и лучше в нескольких. Я не очень разбираюсь но вроде как:
flops - количество операций с плавающей точкой в секунду
mips/ops - количество вообще операций в секунду (mov там, shl)
Найди где-нить в инете подробное описание этих единиц и считай в них. Так прога будет имхо практичнее и универсальнее.
Ксати, а чего ты не разместишь ее на каком-нибудь sourceforge?

PS. А можно поучаствовать в этом проекте? Напиши oxid at inbox.ru

OxiD ★★★★
()
Ответ на: комментарий от anonymous

Твой тест не несет никакой осмысленной инфы.
BogoMIPS на порядок точнее.

anonymous
()
Ответ на: комментарий от OxiD

Sourceforge? Я эту прогу накатал минут за 5, если бы хотел, то сделал бы хотябы чтоб не в секундах время выдавало и в милисекундах, а в часах и т.д. Ну а насчёт flops - это можно.

drish ★★
() автор топика
Ответ на: комментарий от drish

Я так и не понял - это генератор случайных чисел в зависимости от скорости проца чтоли ? ;)))

gcc cpu_test.c -o cpu_test
gcc -g -O3 -pipe  -ffast-math -mcpu=athlon-mp  -march=athlon-mp -funroll-loops -fprefetch-loop-arrays -fmove-all-movables -freduce-all-givs -frerun-loop-opt  -frerun-cse-after-loop -fschedule-insns2 -fno-strength-reduce -fexpensive-optimizations -fcse-follow-jumps -malign-double -falign-loops=32 -falign-jumps=32 -falign-functions=32 -falign-labels=32 -fcse-skip-blocks  -msse -mmmx -m3dnow -mfpmath=sse,387  -fssa -fssa-ccp -fssa-dce -fomit-frame-pointer -Wall -Wno-deprecated -Wno-unused-parameter -W  -fssa -fssa-ccp -fssa-dce cpu_test.c -o cpu_test-opt
cpu_test.c:11: warning: return type defaults to `int'
ss@opteron1:~/Work/Test$ time cpu_test
inital:
1079357035:369821
final:
1079357067:164006
total:
  32.00
ops:
31250000.00

real    0m31.796s
user    0m31.250s
sys     0m0.000s
ss@opteron1:~/Work/Test$ time cpu_test-opt
inital:
1079357072:579717
final:
1079357085:359042
total:
1073828173.00
ops:
   0.93

real    0m12.781s
user    0m12.490s
sys     0m0.000s


PS: половина опций оптимизации для данного случая лишняя - просто выдрал их их одного своего проекта по технологии cut$paste ;)

sS ★★★★★
()
Ответ на: комментарий от sS

Вот тут лабаю прогу аналогичную но только с гуи (QT) и множеством других возможностей, тест памяти, харда и пр. Если интересно пишите cyclon@comail.ru

cyclon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.