Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 18:37 22.05.24 
Клубове/ Компютри и Интернет / Програмисти Пълен преглед*
Информация за клуба
Тема Re: наносекунди , как? [re: EFEX]
АвторEFEX (Нерегистриран) 
Публикувано15.04.07 01:44  



Еми .. тва е.... максимума който успях да направя след всички бози дето написах
стигнах точност 0.00001 сек

ако някой може да помогне за поне още един разряд( ако е възможно) ще съм му very благодарен :)))))

или поне как да прескоча драйверите на LPT-то....
//==================================

procedure TForm1.Button1Click(Sender: TObject);
const b8 = 8;
var
PriorityClass : Integer;
Priority : Integer;
//
i,mi : Int64 ;
bg : TDateTime ;
P : Pointer ;
l : BYTE ;
Pd : ^comp ;
// b : BYTE ;
TimeStamp: record case byte of
1: (Whole: comp);
2: (Lo, Hi: cardinal);
end;
begin
if ( Assigned(str) ) then str.Free; // str : TMemoryStream ; //global
str := Nil;
str := TMemoryStream.Create;
str.SetSize(sz); // const sz = 10

Caption := 'Starting...';
i := 0;
mi := SpE.Value; // SpinEdit default value = 1000000
bg := Now;

l := SizeOf(comp);
P := @l;
New(Pd);

// bOK := QueryPerformanceFrequency(Res); // Res = 3579545 // 1.6GHz CPU

if not SmallPort1.Opened then SmallPort1.Opened := true; // http://www.qsl.net/om3cph/dds/lpt.html download smport

PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
//
repeat
{ asm
MOV DX, 379H
IN AL,DX
MOV b, AL
end;
if ( b and b8=0 ) then }

if ( SmallPort1.Port[$379] and b8 = 0) then
begin
// Pd^ := RDTSC; // function move next for optimal speed
asm
db $0F; db $31;
mov [TimeStamp.Lo], eax
mov [TimeStamp.Hi], edx
end;
Pd^ := TimeStamp.Whole;

str.Write(Pd^,l);
repeat
{ asm
MOV DX, 379H
IN AL,DX
MOV b, AL
end
until b and b8 = b8;}
until (SmallPort1.Port[$379] and b8 = b8 );
end;
Inc(i);
until i > mi;
l := 0;
str.Write(P^,SizeOf(BYTE));
//
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Caption := 'Stoped ' + FormatDateTime('hh:nn:ss:zzz',Now - bg);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i : Byte ;
// ns,lns : TLargeInteger ;
ns,lns : comp ;
L : TStringList ;
begin
L := TStringList.Create ;
Str.Position := 0;
lns := 0;
i := SizeOf(comp);
repeat
Str.Read(ns,i);
L.Add(FormatFloat('0.000000000',ns - lns));
lns := ns;
until Str.Position >=Str.Size;
Mlog.Lines.Text := L.Text;
end;


====
резултат при CPU 1.13GHz (1133MHz)

tick interval / CPU sek

564807412 1133000000 0,498506101
564803166 1133000000 0,498502353
564805390 1133000000 0,498504316
564807063 1133000000 0,498505793
564805605 1133000000 0,498504506
564805721 1133000000 0,498504608
564804308 1133000000 0,498503361
564806852 1133000000 0,498505606
564805650 1133000000 0,498504545
564804713 1133000000 0,498503718
564803857 1133000000 0,498502963
564806709 1133000000 0,49850548
564802713 1133000000 0,498501953
564807849 1133000000 0,498506486
564806977 1133000000 0,498505717
564805400 1133000000 0,498504325



Цялата тема
ТемаАвторПубликувано
* asm 3F8H FastReadLPT port ?? EFEX   11.04.07 21:16
. * 379H де EFEX   11.04.07 21:54
. * Re: asm 3F8H FastReadLPT port ?? ike   11.04.07 22:08
. * Re: asm 3F8H FastReadLPT port ?? EFEX   12.04.07 00:15
. * Re: asm 3F8H FastReadLPT port ?? Labrett   12.04.07 11:01
. * Re: asm 3F8H FastReadLPT port ?? EFEX   12.04.07 11:42
. * Re: asm 3F8H FastReadLPT port ?? ike   12.04.07 11:29
. * Re: asm 3F8H FastReadLPT port ?? EFEX   12.04.07 11:55
. * Re: asm 3F8H FastReadLPT port ?? Formal   12.04.07 17:58
. * с 1 мегахерц не, ама с половин може zaphod   12.04.07 18:08
. * Re: с 1 мегахерц не, ама с половин може Pekoнcтpykтop   13.04.07 09:31
. * Re: с 1 мегахерц не, ама с половин може zaphod   13.04.07 18:13
. * наносекунди , как? EFEX   13.04.07 01:49
. * Re: наносекунди , как? zaphod   13.04.07 08:13
. * Re: наносекунди , как? EFEX   15.04.07 01:44
. * Re: наносекунди , как? ike   15.04.07 03:56
. * Re: наносекунди , как? zaphod   15.04.07 08:52
. * Re: наносекунди , как? ike   15.04.07 13:15
. * Re: наносекунди , как? zaphod   15.04.07 13:25
. * Re: наносекунди , как? ike   15.04.07 20:24
. * Re: наносекунди , как? aaaqqq   30.07.07 10:30
. * Re: наносекунди , как? Pepe   21.04.07 15:11
. * Re: наносекунди , как? EFEX   21.04.07 15:41
. * Re: наносекунди , как? Pepe   25.04.07 13:37
. * Re: asm 3F8H FastReadLPT port ?? ike   13.04.07 13:00
. * Re: asm 3F8H FastReadLPT port ?? EFEX   13.04.07 17:48
. * Re: asm 3F8H FastReadLPT port ?? zaphod   13.04.07 18:08
. * Re: asm 3F8H FastReadLPT port ?? Pepe   13.04.07 19:07
. * Re: asm 3F8H FastReadLPT port ?? EFEX   13.04.07 20:08
. * Re: asm 3F8H FastReadLPT port ?? EFEX   13.04.07 20:38
. * Re: asm 3F8H FastReadLPT port ?? EFEX   13.04.07 20:54
. * Re: asm 3F8H FastReadLPT port ?? ebliviq_zaek   26.04.07 22:17
. * Re: asm 3F8H FastReadLPT port ?? Pepe   27.04.07 10:35
. * Re: asm 3F8H FastReadLPT port ?? EFEX   04.05.07 13:52
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.