Файл-буффер 16 Гб

Тема в разделе "WASM.X64", создана пользователем spa, 28 июн 2010.

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Необходимо прочитать в оп память ( отобразить ) файлик в 16 Гб
    Вопрос собственно как? Даже не спрашивайте зачем)
    Естественно что все надо под x64 а Точнее Windows7 64
     
  2. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    memory mapping в помощь. лучше кусками, наверное.
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Voodoo
    была бы возможность кусками... код требует буфер, в этом то и трабла. гляну что можно сделать.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    spa
    Как обычно регает ISR и мониторим #PF/GP("#AV"). При попытке обращения изменяем буфер, адреса или селекотры, подобно как расширяется стек в NT.
     
  5. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    spa
    Если тебе нужно выполнять трансляцию table[dword]->dword, то можно либо сортировать индексы, либо делать несколько проходов загружая таблицу по частям и обрабатывая только загруженные индексы. А по другому в случае случайного доступа и отсутствии 16Гб оперативной памяти задача будет решаться только теоретически, а на практике "не дождётесь!"
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Black_mirror
    давайте теоретический вариант) я гляну. Вообще доступ то не случайный, но программа обработчик написана не мною, поэтому я не знаю алгоритма. Поэтому мне надо организовать для нее буфер в 16 гб )
     
  7. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    мапите небольшое окно. доступ оформить через функцию.
    (в случае С++ -> в виде класса + оператор индекса.)
    старшая часть адреса в файле шевелит окно по файлу, младшая - адрес в окне.

    вообще, непонятна нужда мапить такие большие куски одновременно. сверхбыстродействующая база данных? так ведь все равно на диск оно сбросится не сразу. проще кэшировать в памяти и сбрасывать в отдельном потоке на диск. ну а по 100% защите от потери - сами понимаете, против лома нет приема.
     
  8. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    spa
    тут ещё важна цена вопроса.
    спокойно посчитайте, не выйдет ли дешевле купить систему с 16гб, чем возюканье?
    и может в дальшейшем это сильно окупиться по производительностью, по сравнению с работой кусочками)
     
  9. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    wsd
    1 раз надо выполнить... там билдинг с одного формата в другой, хотя про покупку оперативы для дом компа еще в размере 12 гб, можно подумать :derisive:
     
  10. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    qqwe
    Причина, в том что код требует char* buf и загруженный в него файл целиком, а переписывать тот код, ой как не хочется, верней ОЙ КАК НЕ ХОЧЕТСЯ. Поэтому надо костыль написать )
     
  11. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    spa
    ну тогда да..
    тогда надо развить идею Clerkа
     
  12. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    конечно, надо смотреть на код, но если нужно выполнять трансляцию - вероятно, не так уж сложно. если в формате нет ссылок - то достаточно просто.
    и вообще, если код ест char*, то переписать его как сказал qwwe - не такая уж проблема, наверное.
     
  13. skomarov

    skomarov New Member

    Публикаций:
    0
    Регистрация:
    14 май 2008
    Сообщения:
    389
    spa
    > Причина, в том что код требует char* buf и загруженный в него файл целиком
    Может быть можно переопределить оператор обращения к элементам буфера?
    char& operator[](int);
    В переопределенном операторе реализовать мапинг файла.
     
  14. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    684
    Ну идея клерка будет через ексепшины работать, так что для нормальной реализации её все равно достаточно большие куски памяти аллочить нужно иначе медленно будет ну примерно как прикол с наномитами если их не туды впихнуть все здоровски тормозит ... я как-то об это спотыкался
     
  15. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    skomarov
    я об этом тоже думал, но надо еще разыменование перегрузить, и глянуть что будет) А вообще если сделать инлайнои и по уму, даже тормозить не должно.
     
  16. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    *humble* Может мне кто-нибудь чисто символически объяснить, почему обычный MapViewOfFile не прокатывает? 64-битная Windows подкачивать с винта что ли разучилась?
     
  17. skomarov

    skomarov New Member

    Публикаций:
    0
    Регистрация:
    14 май 2008
    Сообщения:
    389
    spa
    Вообще, нужны веские основания для 16Гб, иначе это похоже на плохой алгоритм. :)
     
  18. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    l_inc
    А хз, я хоть и грозился но так и не успел попробовать.


    адд

    Пока писал, решил пробовать, вроде правда катит) завтра отлажу отпишусь.
     
  19. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    spa
    Обычный маппинг — это вроде как первая мысль, которая должна возникнуть. Тут начали придумывать велосипед с обработкой исключений, когда в ОС есть уже встроенная Honda CBR1000RR. А после того, как даже Black_mirror так критически отписался, мне даже как-то стыдно стало со своими глупыми вопросами/предложениями лезть...
     
  20. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    l_inc
    Она мне первая и пришла, я ее запомнил, но еще не проверил.