Re: Такты процессора при восспроизведении wav-файла
От: emusic Франция https://software.muzychenko.net/ru
Дата: 23.05.05 07:27
Оценка: +1
Здравствуйте, <Аноним>, Вы писали:

А>Определяю количество тактов, при разной длине wav-файла, всего 15 файлов


Для начала надо бы разобраться, кто придумал столь дурацкую задачу, и есть ли вообще в подобном измерении хоть какой-то смысл. Что такое "количество тактов на проигрывание файла"? Файл проигрывается не процессором, а звуковым адаптером, процессор лишь передает адаптеру звуковые данные, причем делает это на несколько порядков быстрее, чем адаптер реально их выводит на ЦАП. Поэтому при воспроизведении звука программа основную часть времени будет ждать, а процессор в это время будет выполнять другие задачи. А счетчик тактов (TSC) в процессоре все это время будет исправно работать, поэтому в итоге получится количество тактов, соответствующее длительности звучания, с точностью до задержек на переключение контекста при начальном и конечном опросе TSC, причем задержки эти в Windows могут достигать десятков миллисекунд, и ничего с ними не поделаешь. Так что измерения эти лишены какого бы то ни было физического смысла
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Такты процессора при восспроизведении wav-файла
От: Аноним  
Дата: 12.05.05 20:48
Оценка:
Определяю количество тактов, при разной длине wav-файла, всего 15 файлов, отличающиеся на 0,033 секунды. Строю график. Получаю следующие значения тактов
199895717
91968127
92081283
91992035
138214491
138416754
184396089
184163852
184401804
230550708
230516189
276733169
276712208
326309796
322720632
Почему при воспроизведении первого файла(самого короткого) у меня такое огромное кол-во тактов? И почему возрастание идёт не пропорционально, а ступенчато? Помогите пожалуйста, очень нужно.
Re: Такты процессора при восспроизведении wav-файла
От: alex_raider Россия  
Дата: 13.05.05 01:45
Оценка:
Привет, Аноним,
не делай кислых мин

А>Определяю количество тактов, при разной длине wav-файла, всего 15 файлов, отличающиеся на 0,033 секунды. Строю график. Получаю следующие значения тактов


А>Почему при воспроизведении первого файла(самого короткого) у меня такое огромное кол-во тактов? И почему возрастание идёт не пропорционально, а ступенчато? Помогите пожалуйста, очень нужно.


забыл сказать:
А) Какая система
Б) формат wav файла
В) Какая ОС
Г) Как ты измеряешь
Д) И самое важное — а это зачем? нет, правда, зачем это "очень нужно", когда stereo mp3 192kbit/sec на моей хилой по нынешним временам тачке кушает менее 1% ???

Удачи в измерениях!
Re: Такты процессора при восспроизведении wav-файла
От: j.smith  
Дата: 13.05.05 19:01
Оценка:
wrote:
>
>
> Определяю количество тактов, при разной длине wav-файла, всего 15
> файлов, отличающиеся на 0,033 секунды. Строю график. Получаю следующие
> значения тактов
> 199895717
> 91968127
> 92081283
> 91992035
> 138214491
> 138416754
> 184396089
> 184163852
> 184401804
> 230550708
> 230516189
> 276733169
> 276712208
> 326309796
> 322720632
> Почему при воспроизведении первого файла(самого короткого) у меня такое
> огромное кол-во тактов? И почему возрастание идёт не пропорционально, а
> ступенчато? Помогите пожалуйста, очень нужно.

Рекомендую воспользоваться профайлером и просто посмотреть "кто сожрал
проц". Intel VTune подойдет идеально. Можно стащить полнофункциональную
демо версию с сайта Intel.
Posted via RSDN NNTP Server 1.9
Re[2]: Такты процессора при восспроизведении wav-файла
От: Аноним  
Дата: 22.05.05 11:42
Оценка:
Дело в том, alex_raider, что мне нужно сдать курсовую, которая должна при 15-ти различных тестах определять количество тактов процессора, вот... И на защите меня будут спрашивать, типа: "А чё это, мужик, у тебя такой график такой получился?". А я не знаю чё у меня такой график получился, т.е. мне нужна ПОМОЩЬ, разобраться в чём же дело. Может кто знает ссылки какие-нибудь, которые смогут помочь?
Если это поможет, то:
1)Система у меня WinXP(Устанавливаю: setpriorityclass(getcurrentprocess,REALTIME_PRIORITY_CLASS))
2)Формат Wav файла:
Size of Format: 16
Format: PCM
Channels: 2
Samplerate: 44100
Bytes/Sec: 176400
Block Align: 4
3)Листинг куска программы:

function GetCPUTick:int64; //определение тактов
var q:int64;
begin
asm
db $0f,$31
mov dword ptr [q],eax
mov dword ptr [q+4],edx
end;
GetCPUTick:=q;
end;

procedure PlaySndFromMemory(FileIndex:string);
var
f: file;
p: pointer;
fs: integer;
begin
AssignFile(f, FileIndex+'.wav');
Reset(f, 1);
fs := FileSize(f);
GetMem(p, fs);
BlockRead(f, p^, fs);
CloseFile(f);
sndPlaySound(p, SND_MEMORY or SND_SYNC);
FreeMem(p, fs);
end;

procedure TForm1.Button2Click(Sender: TObject);
var st,en:int64;
i:integer;
begin
for i:=1 to 15 do
begin
st:=GetCPUTick;
PlaySndFromMemory(inttostr(i));
en:=GetCPUTick;
listbox1.Items.Add('при длительности'+ ' '+inttostr(33*i)+' млс — '+ inttostr(en-st)+' тактов');
Ar[i]:=inttostr(en-st);
Chart1.Series[0].AddXY(i,(en-st) div 1000,IntToStr(i*33));
end;
Re: Такты процессора при восспроизведении wav-файла
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.05.05 22:31
Оценка:
Здравствуйте, Аноним, Вы писали:

Очевидно, что надо все файлы проиграть циклически раза 2-3 и только потом начинать замеры. Зачем? Чтобы всё что нужно для поигрывания файлов было в памяти. sndPlaySound не известно что вызывает и инициализирует при первом вызове.
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.