Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Подсчет опираций процессора   Найти похожие ветки 

 
Alex____ ©   (2004-12-15 20:14) [0]

Подскажите пожалуйста как сделать подсчет опираций процессора в програме:
"
const n=10;
var a:array[1..n]of longint;k:longint;
procedure sort(l,r:longint);
var i,j:longint;w,x:longint;
begin i:=l;j:=r;
x:=a[(l+r) div 2];
repeat
while a[i]<x do inc(i);
while x<a[j] do dec(j);
if i<=j then begin w:=a[i];a[i]:=a[j];a[j]:=w;inc(i);dec(j) end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
begin
for k:=1 to n do readln(a[k]);
sort(1,n);
for k:=1 to n do writeln(a[k]);
readln;
end.
"
Да, тот самый Quicksort.
Спасибо!


 
begin...end ©   (2004-12-15 20:16) [1]

> Alex____ ©   (15.12.04 20:14)

А что понимается под "опирацией процессора"? И главное - зачем их считать?


 
Alex____ ©   (2004-12-15 20:21) [2]

Можно сказать ассэмблеровских операций, для более точного сравнения алгоритмов.


 
jack128 ©   (2004-12-15 20:28) [3]

открываешь окно CPU и считаешь кол-во строк ;-)
Только вод каждая инструкция процессора выполняется разное время, поэтому просот их кол-во те ничего не даст.  Может просто тесты обыкновенные провести, какой алгоритм лудше??


 
uny ©   (2004-12-15 20:28) [4]

время лучше, хоть сравнивать можно. а операции = бывают процессоры вообще своё что то делают транслированное


 
begin...end ©   (2004-12-15 20:29) [5]

> [2] Alex____ ©   (15.12.04 20:21)

Останов на контрольной точке + сочетание славиш Ctrl-Alt-C.

Только как с помощью такого подсчёта можно сравнить алгоритмы - ума не приложу.


 
Mystic ©   (2004-12-15 20:31) [6]

1. Ввести счетчики вручную
2. Засекать время
3. QueryPerformanceCounter, возможно QueryPerformanceFrequency

Первое самое надежное. На всех компьютерах будет один и тот же результат. Второе и третье зависит от компьютера. Сравнивать алгоритмы надо на одном компьютере, не на разных :)

Вообще-то есть грабли в том, что в операционных системах вроде Windows может случатся, что активность системы будет вносить совю погрешность в вычисления.

Да. Единица измерения в P III есть такт процессора. Команды могут иметьразное количество тактов. Кроме того теоретически возможно, что алгоритм, выполняющийся за большее количество тактов будет выполняться быстрее (за счет большего количества кэш-попаданий, ...) Но это уже тонкости.


 
Alex____ ©   (2004-12-16 08:30) [7]

"Ввести счетчики вручную" КАК???


 
Digitman ©   (2004-12-16 08:57) [8]


> Alex____ ©   (15.12.04 20:21) [2]
> Можно сказать ассэмблеровских операций, для более точного
> сравнения алгоритмов.


сравнивая кол-ва маш.инструкций ты сравниваешь отнюдь не алгоритмы.

если же тебе необходимо сравнить эффективности того или иного алгоритма на одном и том же сортируемом этими алгоритмами списке, то загляни в демо-проект threads.dpr


 
Alex____ ©   (2004-12-16 20:10) [9]

Как посчитать количество тактов процессора?


 
Anatoly Podgoretsky ©   (2004-12-16 20:36) [10]

RDTSC


 
Alex Konshin ©   (2004-12-17 02:31) [11]

RDTSC может быть некорректным, т.к. теоретически код может выполяться на разных процессорах (особенно если долго считает). Можно, конечно, назначить опереленный процессор, но QueryPerformanceCounter будет надежней.
Сейчас уже частенько процессоров несколько стоит, так что будьте осторожны.


 
Anatoly Podgoretsky ©   (2004-12-17 11:36) [12]

QueryPerformanceCounter работает на основе RDTSC, функция просто читает его значение.
Для нескольких процессоров на мой взгляд без разницы из какого будут прочитаны эти значения, все они стартуют одновременно, ошибка может состовлять всего несколько тактов, не знаю как насчет генератора тактов для процессора один на все или разные, думаю что один, но может быть есть системы с отдельными, тогда конечно добавится небольшая ошибка, из за разницы частот кварцев.


 
SammIk ©   (2004-12-17 20:21) [13]

Есть в винде таккая в-я, какая не помню.
Которая привязывает конкретный поток к конкретному процу.
Следовательно счетчик будет считаться с одного проца.
Тогда много процессорность не помешает.


 
Alex____ ©   (2004-12-20 08:04) [14]

Извенмте за необразованость, но что такое RDTSC или QueryPerformanceCounter я не знаю, и в хелпе ничего не нашел.
Обьясните по-подробней плиз.



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.051 c
8-1098731535
LicProd
2004-10-25 23:12
2005.02.06
Организация массива точек


14-1105861550
Константинов
2005-01-16 10:45
2005.02.06
VMWare


1-1106263091
Gladiator
2005-01-21 02:18
2005.02.06
Форма не реагирует на нажатие Del


14-1105859833
YurikGL
2005-01-16 10:17
2005.02.06
Подскажите нормальный дизайнер БД


1-1106414061
ninja
2005-01-22 20:14
2005.02.06
раздражающие звуки