0

У меня есть программа, которая накапливает трафик с сетевого интерфейса в 800 Мбит/с. Эта программа разработана Delphi, также на 32-битной платформе (Delphi не поддерживает 64-битную архитектуру). Я пишу полученную дату в памяти (ОЗУ) и через некоторое время (неизвестно и зависит от полученных данных) записывает блок полученных данных (неизвестный размер и зависит от полученных данных) на жесткий диск и освобождает память (ОЗУ)).Высокоскоростной поток данных и недостаток памяти

Когда я запускаю приложение, несколько раз он выбрасывает «Из памяти» исключение. Что я должен сделать, чтобы предотвратить это исключение?

+0

Я подумываю использовать SSD вместо RAM. Возможно ли и рационально? – salman

ответ

0

Это очень высокая скорость передачи данных - я предполагаю, что это мегабит (100 мегабайт в секунду). Только самые быстрые SSD смогут поддерживать скорость, и только в том случае, если ваше программирование на 100% эффективнее. Проверьте таблицу последовательных скоростей записи: http://www.anandtech.com/storage/showdoc.aspx?i=3702&p=9

Если вы можете бросить больше ОЗУ на проблему, я предлагаю перейти в 64-битный режим и сразу же распределить весь буфер ОЗУ.

+0

Спасибо. Но, как я уже упоминал, моя программа разработана Delphi 2009, а Delphi не поддерживает 64-битную платформу. Кроме того, скорости были связаны с последовательным чтением и записью, в то время как мне нужен произвольный доступ к жесткому диску. – salman

+0

Эта страница о скорости произвольного доступа: http://www.anandtech.com/storage/showdoc.aspx?i=3702&p=10 – salman

+0

@salman: Если вам нужен произвольный доступ, вы можете сами убедиться, что самый быстрый доступ диск имеет только половину требуемой скорости. Мой совет по-прежнему стоит, даже для 32-битного - выделяет столько оперативной памяти, сколько вы можете, без замены, а затем заполните его. –

Смежные вопросы