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

Вниз

Передать управление другому процессу   Найти похожие ветки 

 
TCrash ©   (2003-07-15 11:05) [0]

Написал маленькую тестовую прогу. вот она :

program writetst;
uses sysutils;
type
arr=array[1..1024]of longint;
var
aa: arr;
start,stop: TDateTime;
f: file of arr;
t: text;
i: integer;
begin
for i:=1 to 1024 do aa[i]:=i;
{$I-}
start:=now;
assignfile(f,"test");
rewrite(f);
for i:=1 to 25600 do begin
write(f,aa);
( f)
Написал маленькую тестовую прогу. вот она :

program writetst;
uses sysutils;
type
arr=array[1..1024]of longint;
var
aa: arr;
start,stop: TDateTime;
f: file of arr;
t: text;
i: integer;
begin
for i:=1 to 1024 do aa[i]:=i;
{$I-}
start:=now;
assignfile(f,"test");
rewrite(f);
for i:=1 to 25600 do begin
write(f,aa);
// сюда вставлять
end;
close(f);
stop:=now;
assignfile(t,"result");
rewrite(t);
writeln(t,DateTimeTostr(Start));
writeln(t,DateTimeTostr(Stop));
close(t);
{$I+}
end.

в указанное место требуется вставить какую-нить команду для передачи управления ОС, на время, которое будет происходить запись на диск. Какую функцию для этого можно использовать ?


 
Anatoly Podgoretsky ©   (2003-07-15 11:10) [1]

CreateProcess+WaiForSingleProcess


 
TCrash ©   (2003-07-15 11:15) [2]

нет, интересует не это.
нашел функцию Yield, но не уверен, что это подойдет.
Щаз буду пробовать.


 
Anatoly Podgoretsky ©   (2003-07-15 11:24) [3]

Не подойдет


 
Anatoly Podgoretsky ©   (2003-07-15 11:25) [4]

Может тебе пауза нужна, проясни свою мысль.


 
TCrash ©   (2003-07-15 11:37) [5]

получилось то что требовалось, но не так как думалось.
В хелпе написано, что Yield только для 16-ти разрядных задач.
С 32-х разрядной средой эта функция не взаимодействует.
сделал так :

rewrite(f);
for i:=1 to 25600 do begin
write(f,aa);
получилось то что требовалось, но не так как думалось.
В хелпе написано, что Yield только для 16-ти разрядных задач.
С 32-х разрядной средой эта функция не взаимодействует.
сделал так :

rewrite(f);
for i:=1 to 25600 do begin
write(f,aa);
Sleep(0);
end;


Sleep определяет на сколько милисекунд заснет thread. Если поставить 0, как я понял из хелпа в своем переводе :-), thread не засыпает а отдает системе ресурсы, оставшиеся от самого thread. Понимаю, пояснение корявое, но работает, а эт главное :-)


 
TCrash ©   (2003-07-15 12:15) [6]

Результаты тестирования обескуражили.
Изначально порграмка писалась для определения, кто быстрее работает с жестким диском.
На компе W2k wks и Win Srv 2003.
Программа по сути только создает на диске 2000 Мб файл.
Так вот собственно результат :
W2k - 0:58
2003 - 5:31

Конфигурация компа :
P4 2,4 / mb Intel / ram 256 DDR

тестирование проводилось на NTFS-разделе
Предлагаю обсудить в "Потрепаться"


 
Morfein ©   (2003-07-15 12:47) [7]

А тут нечего обсуждать... скорость ~34 Мб/с недостижима для обычного hdd (не SCSI)... тем более что это NTFS раздел, на котором наверняка включено сжатие... Всё дело в кэше диска и файловой системы.

Да и потом, что это за метод тестирования? Вы бы ещё по 32 байта за один проход цикла писали... тогда бы время записи всего файла вообще минут двадцать бы было...



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
6-48672
eK
2003-07-14 22:32
2003.09.15
Как мне переделать аутентификацию на веб-сервере


8-48654
Vasiliy
2003-05-10 21:14
2003.09.15
Как избавиться от мерцания формы при перерисовке


3-48399
rh
2003-08-26 12:39
2003.09.15
Записать текущую дату


7-48803
Шустрый
2003-06-29 14:10
2003.09.15
Выключение компа одной кнопкой


1-48549
Юля П
2003-09-02 08:36
2003.09.15
Округление чисел