Главная страница
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.029 c
11-48487
microlab
2003-01-06 19:26
2003.09.15
TKOLListView


1-48646
yuliya
2003-08-28 07:34
2003.09.15
String


3-48398
Relaxxx
2003-08-26 12:58
2003.09.15
Автоинкрементное поле


3-48396
vovan
2003-08-26 13:10
2003.09.15
результат Query


9-48392
MeF88
2003-03-10 12:17
2003.09.15
Кто нить делал авиасим?