Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
1-48540
dez
2003-09-02 11:42
2003.09.15
Abstract Error


3-48458
Vorobyev Sergey
2003-08-22 14:11
2003.09.15
Как правильно записать Blob в TStream в UDF ?


1-48631
graphmail
2003-09-03 10:09
2003.09.15
Delphi+Excel


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


14-48790
Rauf
2003-08-26 03:23
2003.09.15
Помогите, где скачать исходники Quake3 Arena???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский