Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Указатель на 400 000 000 элементов???

8.3K
02 октября 2006 года
1000@
29 / / 31.08.2005
 
Код:
nProjTotal=20000;
float *AA_=new float[nProjTotal*nProjTotal];

Говорит об ошибке!!! Оперативки 3 Гб.
Я думаю, что это связано с тем, что не хватает памяти, под указатель ... если ли тип "long указатель"??????
Страницы:
3
30 октября 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=el scorpio]
А это ещё с какого перепугу :confused: ?
[/QUOTE]
Не знаю с какого, но это факт:
filename[8] = *(itoa( i, str_numfile, 10 ));
HANDLE hFile[9];
HANDLE hMapFile[9];
309
31 октября 2006 года
el scorpio
1.1K / / 19.09.2006
Green
Что за код: какие файлы, какие хендлы :eek: ?
Вся работа по поддержке свопирования страниц массива будет скрыта от программиста. И выглядеть будет следующим образом
 
Код:
// Здесь одновременно требуется использовать значения из разных страниц массива
int PageCount = MegaArray.Get_Page_Count();
MegaArray.Set_Page_Count (50); // увеличение кол-ва страниц
MegaArray [10] = MegaArray [100] + MegaArray [1000] + ...; // Много ссылок
MegaArray.Set_Page_Count (PageCount); // Восстановление кол-ва страниц

И всё - специально для возможности масштабирования объекта, все служебные массивы внутри него будут сделаны динамическими (malloc/realloc/free). И вся эта "кухня" от сторонних разработчиков будет скрыта :D.
351
01 ноября 2006 года
PitxBull
633 / / 22.12.2004
[QUOTE=Green]Чтож к замечаниям ты прислушиваешься, значит, не все потерянно. Жаль, что не ко всем...
[/QUOTE]
единственное что подвигло меня на переработку это то что в первом примере не происходит переключение страниц, и этого самого главного глюка ты не заметил , а написал целую кучу идиотских с точки зрения самого алгоритма придирок. можешь придираться к своим подчиненным на работе, но я не твой подчиненный, и потому твои замечания меня не интересуют, более того я их искренне считаю флудом.

2el scorpio.

гыг... ты б перед тем как начать разработку "с нуля" получил бы лицензию на мой алгоритм. лицензия состоит в публичном признании моего первенства на решение данной проблемы путем мап-файлов. после этого в своей программе ты можешь поставить в копирайтах свой ник сразу после моего. ... хотя нет ни надо ... просто напиши что идея алгоритма моя - а реалитзация твоя. :D :D :D
3
01 ноября 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=PitxBull]единственное что подвигло меня на переработку это то что в первом примере не происходит переключение страниц, и этого самого главного глюка ты не заметил , а написал целую кучу идиотских с точки зрения самого алгоритма придирок. можешь придираться к своим подчиненным на работе, но я не твой подчиненный, и потому твои замечания меня не интересуют, более того я их искренне считаю флудом.
[/QUOTE]
Давай ка посмотрим ВСЕ твои изменения и сопоставим их с моими "идиотскими придирками".

"для чего создавать массив memory? Чтобы добить свопфайл?"
Идиотская придирка? Однако, от memory ты избавился:
 
Код:
< memory = (T*)(new char[MAX_FILE_SIZE]);
---
> //memory = (T*)(new char[MAX_FILE_SIZE]);


"Еще один баг: ты не инициализируешь поле curr_file."
Щас, заинициализируем:
 
Код:
> curr_file = 1000;


"Странно, размер контейнера задается в элементах, а выборка элемента происходит по байтовой позиции"
Упс... исправим:
 
Код:
<        int num_file = ( position / MAX_FILE_SIZE ) + 1;
---
>    unsigned __int64 byte_position = position * sizeof(T);
>
>    int num_file = ( byte_position / MAX_FILE_SIZE );


"Unmap не вызывается?"
Опа... и уже вызывается
 
Код:
>        UnmapViewOfFile( memory );


" Ты запутал сам себя с тусованием типов int, __int32 и __int64."
Поправим положение:
 
Код:
< T GetValue( __int32 position )
---
> T GetValue( __int64 position )


Собственно, это все твои изменения, но не все мои критические замечания.
Как видим, мои замечания тебя "не интересуют". :)
И что конкретно я не заметил? :)
351
02 ноября 2006 года
PitxBull
633 / / 22.12.2004
[QUOTE=Green]Давай ка посмотрим ВСЕ твои изменения и сопоставим их с моими "идиотскими придирками".

"для чего создавать массив memory? Чтобы добить свопфайл?"
Идиотская придирка? Однако, от memory ты избавился:
 
Код:
< memory = (T*)(new char[MAX_FILE_SIZE]);
---
> //memory = (T*)(new char[MAX_FILE_SIZE]);


"Еще один баг: ты не инициализируешь поле curr_file."
Щас, заинициализируем:
 
Код:
> curr_file = 1000;


"Странно, размер контейнера задается в элементах, а выборка элемента происходит по байтовой позиции"
Упс... исправим:
 
Код:
<        int num_file = ( position / MAX_FILE_SIZE ) + 1;
---
>    unsigned __int64 byte_position = position * sizeof(T);
>
>    int num_file = ( byte_position / MAX_FILE_SIZE );


"Unmap не вызывается?"
Опа... и уже вызывается
 
Код:
>        UnmapViewOfFile( memory );


" Ты запутал сам себя с тусованием типов int, __int32 и __int64."
Поправим положение:
 
Код:
< T GetValue( __int32 position )
---
> T GetValue( __int64 position )


Собственно, это все твои изменения, но не все мои критические замечания.
Как видим, мои замечания тебя "не интересуют". :)
И что конкретно я не заметил? :)[/QUOTE]
га - га прочитай мой пост еще раз . там это написано прямым текстом. га - га - га.

P.S. как ты подумаешь почему чол создавший тему не говорит тебе спасибо за твои "ценные" указания ?
309
02 ноября 2006 года
el scorpio
1.1K / / 19.09.2006
[QUOTE=PitxBull]ты б перед тем как начать разработку "с нуля" получил бы лицензию на мой алгоритм. лицензия состоит в публичном признании моего первенства на решение данной проблемы путем мап-файлов. после этого в своей программе ты можешь поставить в копирайтах свой ник сразу после моего. ... хотя нет ни надо ... просто напиши что идея алгоритма моя - а реалитзация твоя.[/QUOTE]
А на пузырьковый алгоритм сортировки лицензию купить не требуется :confused:
Ладно, для тех, кто в танке :mad: , повторяю свой пост на первой странице этой темы :p .
Цитата:

Когда требуется создать элемент с до...я (очень много) элементов, придётся сделать финт ушами . Так как сама Windows имеет ограничения по размеру доступной одной программе памяти, то использование системного файла подкачки не поможет. Придётся делать свой алгоритм подкачки.

Вот примерное объявление класса мегамассива.
код объявления класса повторять не буду
Конкретную реализацию чтения/записи в файл попробуйте придумать сами

Для большей оптимальности программы можно вместо одной страницы использовать несколько страниц - список, в котором при загрузке новой страницы будет сбрасываться страница, к которой не обращались дольше всех. Это сделать сложнее - но дерзайте


И это при том, что ВЫ, появились в этой теме совсем недавно.
Так что признавать я ничего не собираюсь - люди рассудят нас. А вечером закину код.

351
02 ноября 2006 года
PitxBull
633 / / 22.12.2004
[QUOTE=el scorpio]А на пузырьковый алгоритм сортировки лицензию купить не требуется :confused:
[/QUOTE]
ну если те очень надо то могу продать.

[QUOTE=el scorpio]
Ладно, для тех, кто в танке :mad: , повторяю свой пост на первой странице этой темы :p .
[/QUOTE]
интересно где там упоминаются map-файлы ?

выложишь код - жди комментариев. :D
309
02 ноября 2006 года
el scorpio
1.1K / / 19.09.2006
[QUOTE=PitxBull]интересно где там упоминаются map-файлы?[/QUOTE]
А кто говорил, что я Map использовать буду? Или Вы считаете свой способ решения задачи единственным?

Кстати, а какие объекты сможет хранить данный массив: только базовые типы и простые структуры, или же включая сложные классы категории "контейнер"?

С превеликим удовольствием выслушаю Ваши комментарии моего кода, а вот сей час изрядно озадачу.
Объект представляет собой массив из дохрена элементов. Но прежде, чем его где-то использовать, нужно проинициализировать, заполнив все ячейки начальным значением (для целочисленных типов - нулём). В уважающих себя контейнерах массивов это делает конструктор.
Внимание вопрос: сколько времени будет производится создание объекта? :D
351
02 ноября 2006 года
PitxBull
633 / / 22.12.2004
[QUOTE=el scorpio]А кто говорил, что я Map использовать буду? Или Вы считаете свой способ решения задачи единственным?

Кстати, а какие объекты сможет хранить данный массив: только базовые типы и простые структуры, или же включая сложные классы категории "контейнер"?

С превеликим удовольствием выслушаю Ваши комментарии моего кода, а вот сей час изрядно озадачу.
Объект представляет собой массив из дохрена элементов. Но прежде, чем его где-то использовать, нужно проинициализировать, заполнив все ячейки начальным значением (для целочисленных типов - нулём). В уважающих себя контейнерах массивов это делает конструктор.
Внимание вопрос: сколько времени будет производится создание объекта? :D[/QUOTE]
ламер... насмешил... я жду твоего кода хотя его главный и уничтожающий недостаток знаю уже сейчас .... не обижайся если потом будешь выглядеть идиотом:))))))))))))))))))
309
03 ноября 2006 года
el scorpio
1.1K / / 19.09.2006
Так, попёрли оскорбления и насмешки. Эх, модератора на вас нет....

А вот ответов на конкретный вопрос о предполагаемой скорости (продолжительности) инициализации массива в 400 миллионов элементов я, наверное, не дождусь.
Хотя решение есть. Сложное и долгое в реализации, зато простое и быстрое в работе - а для сложных задач иных решений не существует (иначе они были бы простыми :D).

P.S.
Попрошу не "тыкать", ибо, перефразировав Булгакова, ни один скорпион ещё ни с кем не пил на брудершафт.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог