Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> какие бонусы от streambuf и есть ли они? очень частая запись в файл 
:(
    Опции темы
AlterMann
Дата 24.12.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Доброго времени суток, господа-товарищи.

У меня следующая ситуация.
Моделируется определённый процесс...
Происходит расчёт по системе диф.уравнений, по большому двумерному полю (массиву - примерно 1000х1000). Состояние меняется каждую 0.01 секунду (в плане мат.модели, сам расчёт - происходит быстрее), весь моделируемый процесс длится около 5 минут. Каждое десятое состояние поля должно сохраняться в файл.
Т.е. получается
Код

// ... blablabla
float dt = 0.01;
float tNow = 0;
int n = 0;
do {
    // меняем состояние рассчитываемого поля
    // ...

    if (n % 10 == 0)
    {
        for (int i = 0; i < 1000; i++)
            for (int j = 0; j < 1000; j++)
            {
                // сохраняем в файл, все штуки... т.е.
                outf << my_struct[i, j]; // my_struct - мой класс, в котором хранится состояние каждой рассчитываемой "ячейки" (несколько переменных типа double)
                // запись производится в двоичном формате (ios::binary)
            }
    }
    n++;
    tNow += dt;
} while (tNow < 5);
// blablabla


Так вот, эта самая запись в файл, происходит очень часто... от этого, мягко говоря, "укакивается" винт... и процесс расчёта - замедляется.
Мысль, приходящая по этому поводу в голову - буфер.
Но!
В basic_stream<> уже реализован этот самый (или не этот самый???) буфер, в виде streambuf. Вот только как с ним работать не совсем понятно. Облистался Страуструпом и мануалом по STL. И как-то не поня всё равно :(

Может быть вы мне подскажите, реально ли этот streambuf сначачала всё кеширует, а потом суёт в поток, при заполнении буфера? Или же нет - и нужно придумывать что-то своё? Тогда как это своё сделать? Всё засовывать в некий кеш в виде string<double>(1024), а потом этот кеш засовывать в файл?..
Либо же streambuf - на самом деле выступает в роли кеша, но тогда, как ему сказать сколько байт кешировать - увеличить размер кеша, или мб он уже и так большой?

Спасибо.

Добавлено через 3 минуты и 49 секунд
Прошу прощения, что сразу не исправил... всё вроде перечитал, но не заметил такой глупой ошибки...)

my_struct - вектор векторов моей структуры, и соответственно обращение к ней, не [i, j], а [i][j].
Это я тут пишу, чтобы совсем за хулигана не сойти)

По форуму тоже искал - ничего не нашёл.

PM MAIL WWW   Вверх
xvr
Дата 24.12.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Все кэшируется автоматически, причем на многих уровнях  smile В вашем случае возможно имеет смысл сбрасывать в файл все целиком непосредственно средствами ОС (можно через memory mapped file, это будет максимально быстро).
PM MAIL   Вверх
AlterMann
Дата 24.12.2008, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



файл, получается порядка полтора-два гигабайта, а выполняется всё на "несильных" линуксовых машинах.
PM MAIL WWW   Вверх
xvr
Дата 24.12.2008, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(AlterMann @ 24.12.2008,  18:39)
файл, получается порядка полтора-два гигабайта, 

О!  smile Солидные размеры. Похоже, что диском оно будет жужжать в любом случае
Цитата

а выполняется всё на "несильных" линуксовых машинах.
Все равно будет жужжать  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0477 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.