Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизПодсчет опираций процессора Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c