Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.014 c
1-48533
wdsergius
2003-09-02 12:35
2003.09.15
Как удалить каталог програмно ??????


3-48409
aleman
2003-08-26 10:16
2003.09.15
Может ли Oracle 8i работать с файлами по сети?


14-48719
Григорий Поваров
2003-08-26 15:31
2003.09.15
Plugin с формами без лишних bpl


9-48385
Smola
2003-03-08 13:49
2003.09.15
Можно ли увеличить допустимый размер дмф файла


1-48498
Calm
2003-09-02 17:13
2003.09.15
Корректно ли создать в методе TThread.Execute VCL-компоненты?




   Наверх