Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 01.07.04 09:18

Акция !

Внимание!Акция в поддержку отечественного производителя ПО. Подробнее...

Лучшее из нашего FAQ   |x|
Скорость работы процессора, точный таймер
Данная тема уже обсуждалась, но у меня есть своя реализация сабжа. Начиная с Pentium MMX, Intel ввели в процессор счетчик тактов на 64 бита (Присутствуэт точно и в К6). Для того чтобы посотреть на его содержание, была введена команда "rdtsc" (подробное описание в интеловской мануале). Эту возможность можно использовать для реализации сабжа.
Посоку Делфя не вкурсе насчет rdtsc, то пришлось юзать опкод (0F31).
Привожу простенький примерчик юзания, Вы уж извините - немножко кривоват получился, да и ошибка компалера какая-то вылезла :( (V4 Bld5.104 Upd 2). Кому интересно, поделитесь своими соображениями по этому поводу. Особенно интерисует работа в режиме когда меняется частота процессора (Duty Cycle, StandBy).

Проверялось под еНТями на Пне 2 333.

// (C) 1999 ISV
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Label4: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Counter:integer; //Счетчик срабатывания таймера
Start:int64; //Начало роботы
Previous:int64; //Предыдущее значение
PStart,PStop:int64; //Для примера выч. времени
CurRate:integer; //Текущая частота проца
function GetCPUClick:int64;
function GetTime(Start,Stop:int64):double;
end;

var
Form1: TForm 1;

implementation

{$R *.DFM}
// Ф! ункция р аботает на пнях ММХ или выше а
// также проверялась на К6
function TForm1.GetCPUClick:int64;
begin
asm
db 0fh,31h // Опкод для команды rdtsc
mov dword ptr result,eax
mov dword ptr result[4],edx
end;
// Не смешно :(. Без ?той штуки
// Компайлер выдает Internal error C1079
Result:=Result;
end;

// Время в секундах между старт и стоп
function TForm1.GetTime(Start,Stop:int64):double;
begin
try
result:=(Stop-Start)/CurRate
except
result:=0;
end;
end;

// Обработчик таймера считает текущую частоту, выводит ее, а также
// усредненную частоту, текущий такт с момента старта процессора.
// При постоянной частоте процессора желательно интервал брать
побольше
// 1-5с для точного прощета частоты процессора.
procedure TForm1.Timer1Time r(Sender: TObject);
var
i:int64;
begin
i:=GetCPUClick;
if Counter=0
then Start:=i
else begin
Label2.Caption:=Format('Частота общая:
%2f',[(i-Start)/(Counter*Timer1.Interval*1000)]);
Label3.Caption:=Format('Частота текущая:
%2f',[(i-Previous)/(Timer1.Interval*1000)]);
CurRate:=Round(((i-Previous)*1000)/(Timer1.Interval));
end;
Label1.Caption:='Такты: '+IntToStr(i);
Previous:=i;
Inc(Counter);
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
Counter:=0;
end;

// Заносим стартовое время для примера
procedure TForm1.Button1Click(Sender: TObject);
begin
PStart:=GetCPUClick;
end;

// Останавливаем отсчет времени и показуем соко
// прошло секунд
procedure TForm1.Button2Click(Sender: TObject);
begin< /b>
PStop:=GetCPUClick;
Label4.Caption:=Format('Вр! емя межд у нажатиями:
%gсек',[GetTime(PStart,PStop)])
end;

end.

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
  • Извлечение иконки
    Здраствуйте мастера! Подскажите как извлечь из ЛЮБОГО файла или папки иконку и добавать её в ImageList???
  • Зачем нужены курсоры?
    В нескольких книгах которые у меня есть написано "тра-та-та... курсоры бывают read-only, scrollable, dynamic, ...
  • SysDcu 7 - где же эти 5 кБ ?
    Привет всем, установил себе замену SysDcu для Delphi7, но не вижу никакого эффекта. Пустая форма "безо всего" как ...
  • Азбука Морзе
    Подскажите, плиз, по возможности с примерчиком, как в 2000 винде сформировать телеграфную азбуку морзе через колонки. ...
  • Чем заменить idHTTP
    Проблема вот в чем: работал с idHTTP - компонент очень хороший, много свойств, но нет полноценной возможности ...
  • Как перехватить изменения в реестре
    Приветствую всех Мастеров!!! Подскажите, как мне перехватить моим приложением изменения произошедшие в реестре, ...

У нас большой выбор статей   |x|
Поразрядная сортировка
Пожалуй, ни один алгоритм не применяется так часто, как алгоритм сортировки. Говорят также, что программа сортировки массива была первой программой, написанной для ЭВМ. С тех пор придумано множество алгоритмов, позволяющих упорядочить данные тем или иным образом, но, как ни странно, ни один из них нельзя назвать универсальным. В этой статье рассматривается достаточно редко встречающийся метод цифровой (поразрядной) сортировки.
Новинки книжного рынка   |x|
Система программирования Delphi (+ дискета)
Книга рассказывает об одной из самых распространенных в мире систем программирования Delphi, разработанной американской корпорацией Borland. Приводится неформальное знакомство с языком программирования и интегрированной средой разработчика. Подробно, на многочисленных примерах поясняются особенности использования языка программирования Delphi (Object Pascal). Рассматриваются компоненты общего назначения и программа в целом. Дается введение в программирование баз данных. Поясняются особенности программирования для Интернета. В книге сознательно не подчеркиваются различия многочисленных весий Delphi (на сегодня таких версий 7), так что она пригодна для изучения любой версии Delphi. На сопровождающей книгу дискете находятся исходные тексты всех примеров.
Автор: Валерий Фаронов
Опрос населения :)
Стоит ли устраивать встречи программистов в реале? (пирушки :)
»»» Обязательно!
»»» Иногда можно
»»» Я туда не пойду
»»» Категорически нет
Для души

Хокку дня
И разложив костер,
Куда годы уходят -
Не видно.

Афоризмы
Я говорю вам свое окончательное "может быть" (Сэмюэл Голдвин)

Фраза дня
Душа просит ананасов в шампанском, организм требует водки!

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Миннесоте (США) вам грозит попасть в тюрьму за то, что вы спите голым.
В Аляске (США) запрещается (добавим -и не рекомендуется) будить медведей, чтобы их сфотографировать, а также, выбрасывать живых лосей из самолета.

И на закуску коротенький анекдот
Копчик - это маленький, очень маленький американский полицейский.

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=77511596


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться

В избранное