Size: a a a

2020 February 10

DM

Dmitry Mozulyov in Delphi & Lazarus
Sergey Bodrov
На примере того же ZIP - мне вот понадобилось генерировать огромный (гигабайты) XML и сразу "на лету" его сжимать. Если это делать через временный файл, то это займет намного больше времени и ресурсов. Многие простые компоненты для ZIP такое не умеют.
У меня стартовал проект CachedArchives как раз для таких задач. Если хочешь посотрудничать - пиши в личку
источник

SB

Sergey Bodrov in Delphi & Lazarus
TTmpFileStream - это временный файл, который находится целиком в памяти, пока места хватает, потом автоматом свопится на диск.
источник

SB

Sergey Bodrov in Delphi & Lazarus
То есть, можно спокойно стримить как в обычный файл любым удобным способом, не боясь, что память лопнет.
источник

SB

Sergey Bodrov in Delphi & Lazarus
У меня еще ставится флаг FILE_FLAG_DELETE_ON_CLOSE, чтобы не засорять систему
источник

DM

Dmitry Mozulyov in Delphi & Lazarus
Sergey Bodrov
То есть, можно спокойно стримить как в обычный файл любым удобным способом, не боясь, что память лопнет.
Мне показалось, или твоё решение это сохранение гигабайта в память?
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Sergey Bodrov
TTmpFileStream - это временный файл, который находится целиком в памяти, пока места хватает, потом автоматом свопится на диск.
Пока хватает место где? Можно задать предел самому?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Dmitry Mozulyov
Мне показалось, или твоё решение это сохранение гигабайта в память?
Да, это решение сохранения в память, сколько влезет. Но память отжирается не у процесса, а у системы. И автоматически пишет на диск, если памяти не хватает. Удобно для систем на флешках, где вредно писать на диск.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Геннадий Малинин
Пока хватает место где? Можно задать предел самому?
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
А, это системная реализация
источник

PB

Pshemko Bzdeshko in Delphi & Lazarus
сдается мне, что человек нифига не понял из описания компонента и на самом деле имеется в виду маппинг временного файла..
источник

SB

Sergey Bodrov in Delphi & Lazarus
Pshemko Bzdeshko
сдается мне, что человек нифига не понял из описания компонента и на самом деле имеется в виду маппинг временного файла..
Маппинг это совсем другое, сложнее и актуально больше для чтения файлов.
источник

PB

Pshemko Bzdeshko in Delphi & Lazarus
Sergey Bodrov
Маппинг это совсем другое, сложнее и актуально больше для чтения файлов.
ну а теперь начинаем немного думать головой — на кой черт писать временный файл, если из него не будет происходит чтение…
источник

SB

Sergey Bodrov in Delphi & Lazarus
По сути маппинг это отражение кусочка файла на буфер в памяти.
источник

DM

Dmitry Mozulyov in Delphi & Lazarus
Sergey Bodrov
Да, это решение сохранения в память, сколько влезет. Но память отжирается не у процесса, а у системы. И автоматически пишет на диск, если памяти не хватает. Удобно для систем на флешках, где вредно писать на диск.
Господи. А что если я тебе скажу, что можно обойтись парой сотен килобайт?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Dmitry Mozulyov
Господи. А что если я тебе скажу, что можно обойтись парой сотен килобайт?
В работе с оперативной памятью есть неприятный нюанс. Система может не дать кусок памяти нужного размера даже если диспетчер задач показывает терабайт свободной памяти. Фрагментация, мать ее. А у временного файла нет проблем с фрагментацией.
источник

DM

Dmitry Mozulyov in Delphi & Lazarus
Sergey Bodrov
В работе с оперативной памятью есть неприятный нюанс. Система может не дать кусок памяти нужного размера даже если диспетчер задач показывает терабайт свободной памяти. Фрагментация, мать ее. А у временного файла нет проблем с фрагментацией.
Ты не понял? В принципе нет необходимости расходовать гигабайты оперативной памяти
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Pshemko Bzdeshko
сдается мне, что человек нифига не понял из описания компонента и на самом деле имеется в виду маппинг временного файла..
не, это другое
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Dmitry Mozulyov
Ты не понял? В принципе нет необходимости расходовать гигабайты оперативной памяти
я так понял, что там память не расходуется
источник

DB

Dmitry Belkevich in Delphi & Lazarus
это даже не маппинг
источник

PB

Pshemko Bzdeshko in Delphi & Lazarus
Dmitry Belkevich
не, это другое
другое — это форточный аналог tmpfs который, открытие с флагом «временного файл» и удаления при закрытии?
источник