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

Вниз

Есть ли замена для TMemoryStream   Найти похожие ветки 

 
gray_falcon ©   (2007-05-29 16:07) [0]

Есть ли еще какие-либо механизмы управления помятью в Delphi, кроме Stream`ов, для хранения данных больших объемов.


 
MBo ©   (2007-05-29 16:13) [1]

массивы? ;)


 
Сергей М. ©   (2007-05-29 16:22) [2]


> gray_falcon ©   (29.05.07 16:07)


Насколько больших ?
Чем TMemoryStream не устраивает ?
Почему именно TMemoryStream упомянут ?


 
Johnmen ©   (2007-05-29 20:17) [3]

Таки для управления механизм или для хранения нечто?


 
Rouse_ ©   (2007-05-29 21:40) [4]

Есть конечно, GеtMem тот-же... сурово и со вкусом...


 
gray_falcon ©   (2007-05-30 23:07) [5]

Допустим у меня есть некоторый файл


 
homm ©   (2007-05-30 23:14) [6]

> Есть ли замена для TMemoryStream

> Допустим у меня есть некоторый файл

TFileStream ???


 
oxffff ©   (2007-05-30 23:20) [7]


> gray_falcon ©   (30.05.07 23:07) [5]
> Допустим у меня есть некоторый файл


CreateFileMapping?


 
gray_falcon ©   (2007-05-30 23:40) [8]

связь прервалась, недопередолось :-)
Допустим у меня есть некоторый файл содержание которого заранее неизвестно, начиная от небольшого текста, заканчивая коллекцией картинок. Он помещается в память, а затем обрабатывается и данные с нужными адресами записываются в другой поток.
При дальнейшей работе часто вызывается сначала один поток, затем по полученным данным устанавливается позиция во второй поток. Так при частом TMemoryStream.position загружается процессор.
Поэтому мне и стало интересно узнать, что еще можно применять в подобных случаях, т.к. сам я применял эти самые потоки и когда-то AssignFile


 
SlymRO ©   (2007-05-31 05:48) [9]

gray_falcon ©   (30.05.07 23:40) [8]
TMemoryStream.position загружается процессор.

Интересно чем?
function TCustomMemoryStream.Seek(Offset: Longint; Origin: Word): Longint;
begin
 case Origin of
   soFromBeginning: FPosition := Offset;
   soFromCurrent: Inc(FPosition, Offset);
   soFromEnd: FPosition := FSize + Offset;
 end;
 Result := FPosition;
end;


 
Palladin ©   (2007-05-31 10:03) [10]


> SlymRO ©   (31.05.07 05:48) [9]


> Интересно чем?


:)

For i:=0 to theFStream.Size-1 Do theFStream.Position:=i;


 
gray_falcon ©   (2007-05-31 21:00) [11]


> For i:=0 to theFStream.Size-1 Do theFStream.Position:=i;

доходило и до такого :-]
просто как-то работал с потоком размером 16777216 где читался не поочередно каждый байт!!! Все это по-моему вообще стоило реализовать на assembler"е


 
homm ©   (2007-05-31 21:16) [12]

> просто как-то работал с потоком размером 16777216 где читался
> не поочередно каждый байт!!! Все это по-моему вообще стоило
> реализовать на assembler"е

Имхо, выйигрыш был бы не более 10%. Дело в том, что при непоследовательном доступе, когда каждый следующий байт читаеться из новой страницы памяти (вся память поделена на блоки, по 4кб, называемые страницами), основное время уходит как раз на открытие этих страниц. Здесь помогаеть только изменение алгоритма работы.


 
oxffff ©   (2007-05-31 22:27) [13]


> (вся память поделена на блоки, по 4кб, называемые страницами),
>  


Вы знаете страницы бывают еще и по 2Mb и 4Mb.

PSE (page size extensions) flag, bit 4 of CR4 (introduced in the Pentium® and Pentium® Pro processors).
The PSE flag enables large page sizes: 4-MByte pages or 2-MByte pages (when the PAE flag is set)


 
homm ©   (2007-05-31 22:35) [14]

> Вы знаете страницы бывают еще и по 2Mb и 4Mb.

Мы же вроде как о win32 on Intel PC разговор ведем :)

ЗЫ Блин, что случилось, почему меня вдруг все стали на «Вы» называть? Или я просто раньше внимания не обращал.


 
Anatoly Podgoretsky ©   (2007-06-01 12:11) [15]

> homm  (31.05.2007 22:35:14)  [14]

Дожил


 
ANB ©   (2007-06-01 13:20) [16]


> Вы знаете страницы бывают еще и по 2Mb и 4Mb.

А программисту прикладной программы на ОС с SVS не фиолетово ?


 
oxffff ©   (2007-06-01 13:23) [17]


> ANB ©   (01.06.07 13:20) [16]
>
> > Вы знаете страницы бывают еще и по 2Mb и 4Mb.
>
> А программисту прикладной программы на ОС с SVS не фиолетово
> ?


Перечитай еще раз


 
TStas ©   (2007-06-01 16:52) [18]

Вообще почем зря TMemoryStream использовать не стоит - может все сурово глюкануть (Не хватит памяти - и все). Не зря верь try TMemoryStream.Create пишут. ИМХО для чего-то большого изумительно TFileStream подходит.



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

Форум: "Основная";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.05 c
3-1177493170
EvilIJ
2007-04-25 13:26
2007.08.12
Минимальные, максимальные и значения по умолчанию


1-1179609104
Dmitry_177
2007-05-20 01:11
2007.08.12
Длина строки


2-1184563232
Kolan
2007-07-16 09:20
2007.08.12
DBGrid с dbEditing — не редактируется, в чем может быть дело?


2-1184854845
Avokain
2007-07-19 18:20
2007.08.12
Числа вида 1,000,000


15-1184490692
Gero
2007-07-15 13:11
2007.08.12
Преобразовать матрешку в DVD-video





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский