Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.07.12;
Скачать: CL | DM;

Вниз

что быстрее   Найти похожие ветки 

 
ford ©   (2009-05-07 13:29) [0]

Всем, привет!
Интересно Ваше мнение.
Есть одномерный массив размерность 1..10000000 элемент массива это структура TRec размером 108 байт
т.е. ежели его объявить
Var Mas:Array[1..10000000] of TRec
то оно съест больше гига оперативки
т.к. на компе стоит 512 МБ оперативки, то я предпологаю что винда разместит такую весч в файле подкачки

можно так не извращаться а открыть файлик и читать/писать из него данную структуру, со соответствующим смещением в файле по индексу элемента массива.

так вот вопрос, что по Вашему мнению будет работать быстрее
дать управление таким массивом ОС или всетаки работать с файликом ??


 
Игорь Шевченко ©   (2009-05-07 13:30) [1]

в чем задача ?


 
Eraser ©   (2009-05-07 13:31) [2]

> т.к. на компе стоит 512 МБ оперативки

у кого на компе? )


 
Anatoly Podgoretsky ©   (2009-05-07 13:33) [3]

Быстрее будет Memory Mapped Files.


 
ford ©   (2009-05-07 13:47) [4]


> Eraser ©   (07.05.09 13:31) [2]
> > т.к. на компе стоит 512 МБ оперативки
>
> у кого на компе? )

у меня например а что?? есть проблемма??
ну немогу я купить себе планку в пару терабайт
не выпускают еще :))


> Игорь Шевченко ©   (07.05.09 13:30) [1]
> в чем задача ?

задача, рабоать с этим массивом
писать/читать элементы массива
:) как обычно


> Anatoly Podgoretsky ©   (07.05.09 13:33) [3]
> Быстрее будет Memory Mapped Files.

а ежели не сложно, дай ссылку почитать про них, первый раз слышу
хотя может просто первый раз слышу такое название


 
MBo ©   (2009-05-07 14:03) [5]

CreateFileMapping
MapViewOfFile


 
Eraser ©   (2009-05-07 14:05) [6]

> [4] ford ©   (07.05.09 13:47)


> есть проблемма??

видимо есть, иначе б ветку не создал )

> ну немогу я купить себе планку в пару терабайт

купи на 2 ГБ.


 
Игорь Шевченко ©   (2009-05-07 14:07) [7]


> задача, рабоать с этим массивом
> писать/читать элементы массива
> :) как обычно


это не задача, это реализация. Я про задачу спрашиваю


 
ford ©   (2009-05-07 14:19) [8]


> это не задача, это реализация. Я про задачу спрашиваю

есть несколько задач которые используют такие вот массивы данных
программы работают все делают :) как положенно
алгоритм заполнения этих масивов данными я оптимизировал скорость устраивает
вот осталось оптимизировать алгоритм который реализован в классе управления этими данными (работа с элементами массива)

сейчас это происходит примерно так
загружается первый элемент массива, в котором есть ссылки(позиция в файле) на следующие элементы, у тех соответственно тоже
т.е. грубо говоря дерево разложенно в одномерный массив

самый быстрый способ обрабатывать такой массив ессесно загрузить его в оперативку, но размеры (от 1 до 8 гиг)  пугают это делать

вот оказывается есть такая штука как Memory Mapped File

я вообще не очень понимаю, зачем тебе задача то??
основная задача это оптимизировать то что есть по скорости :)


 
Медвежонок Пятачок ©   (2009-05-07 14:23) [9]

по скорости говоришь? а чего на память жалуешься?


 
ford ©   (2009-05-07 14:24) [10]


> купи на 2 ГБ.

вот потому то нынешние игрушки требуют супер пупер компьютеров
многие разработчики вместо того чтобы оптимизировать алгоритмы, заставляют пользователя покупать все более мощьные железяки
:)
к стати лет 12 назад на 386 машинках игрались по сети в леталку космическую, трехмерные модели с простыми заливками перемещались в бесконечном трехмерном пространстве, ни никаких торомзов и экзешник весил шоб не соврать кил 50-60
и графика там была 640х480 (больше мониторы не тянули)
и щас блин..... купи видюху штук за 15-20 проц штук за 10
жесткий гиг на 500 и игруля будет на паре ДВД
:)))


 
Игорь Шевченко ©   (2009-05-07 14:26) [11]


> я вообще не очень понимаю, зачем тебе задача то??


мне, как ты понимаешь, это нахрен не надо, проблема у тебя. Парься дальше


 
Медвежонок Пятачок ©   (2009-05-07 14:26) [12]

вот из за таких как ты, грузящих в память 10 лимонов элементов они и тормозят


 
ford ©   (2009-05-07 14:27) [13]


> Медвежонок Пятачок ©   (07.05.09 14:23) [9]
> по скорости говоришь? а чего на память жалуешься?

я не жалуюсь на память
я спрашиваю как будет быстрее работать с массивом в памяти или с массивом на жестком диске в файле
при условии что массивчик от 1 гига

а так ничего, ессесно в памяти массивчик быстрее обрабатывается
тока вот когда размер такой то windows его в свап засунет как пить дать
и будет также тебе с файлом работать


 
Дуб ©   (2009-05-07 14:28) [14]


> многие разработчики вместо того чтобы оптимизировать алгоритмы,

многие вместо того, чтобы сохранять экологию и прочие земные ресурсы - ходят в нейлоне и отапливаются газом. А надо по старинке - топиться дровами из ближайшего леса и ходить в шкурах.

:)))


 
Медвежонок Пятачок ©   (2009-05-07 14:30) [15]

я спрашиваю как будет быстрее работать с массивом в памяти или с массивом на жестком диске в файле

Совсем ку-ку?
Этот вопрос наверное в школьной информатике даже разъясняется.


 
sniknik ©   (2009-05-07 14:30) [16]

> я вообще не очень понимаю, зачем тебе задача то??
задачу можно решать. решать многими методами, выбирая разные реализации... а реализацию решать нельзя, и сменить неудачную нельзя, раз она выбрана а задача неизвестна.
т.е. в одном случае простор, а в другом ... - "подметать ломами от сих и до обеда".

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


 
sniknik ©   (2009-05-07 14:32) [17]

> и ходить в шкурах.
зеленых. не то за зверье они тебя съедят.


 
ford ©   (2009-05-07 14:47) [18]


> многие вместо того, чтобы сохранять экологию и прочие земные
> ресурсы - ходят в нейлоне и отапливаются газом. А надо по
> старинке - топиться дровами из ближайшего леса и ходить
> в шкурах.
>
> :)))

ну у тебя и сравнения :)
т.е. ты против шкур?? ябы посмотрел на тебя в нейлоне при -30 :)))))
или в том же нейлоне при +30
от картинка былабы ;)


 
Anatoly Podgoretsky ©   (2009-05-07 14:55) [19]


> ну немогу я купить себе планку в пару терабайт
> не выпускают еще :))

Выпускают платы на 2 ТБ, для серверов на базе Итаниум и подобных.


 
ford ©   (2009-05-07 14:56) [20]


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

охотно тебе верю
методов структурного анализа выделямых частиц при атомном взрыве тоже много и реализовать можно по разному

но в данном случае я описал задачу в самом первом посте, ну повторюсь,  
есть массив немерянной длины надо рабоать с его элементами - чиать\писать
что быдет быстрее грузить его в память и доверить ОС управление или всетаки работа напрямую с файлом из которого и читать и сохранять тудаже

в первом случае это будет просто
mas[1000]:=mas[1000]+100;
во втором
надо считать из файла
например так
f.Seek(N_Elementa*SizeOf(TRec),soFromBeginning);
f.Read(el,SizeOf(TRec);
...
действия с el
...
f.Seek(-SizeOf(TRec),soFromCurrent);
f.Write(el,SizeOf(Trec));

да ежели 1000 эл-тов то первый вариант быстрее
а если их милионы
купить много памяти не вариант
ибо сегодня их миллионы затра надо будет сотни милионов элементов использовать


 
Anatoly Podgoretsky ©   (2009-05-07 14:58) [21]

> ford  (07.05.2009 14:27:13)  [13]

1 гб массив элементарно в памяти помещается, даже на 32 битных программах.


 
ford ©   (2009-05-07 14:58) [22]


> Anatoly Podgoretsky ©
....
> Выпускают платы на 2 ТБ, для серверов на базе Итаниум и
> подобных.

круто
от бы мне на целерончик
такую воткнуть :)
да еще всем в офисе поставить
тока боюсь ежели я выпишу счет на такую планочку
то меня уволят нафиг :))))
и наймут других програмистов
;)


 
Anatoly Podgoretsky ©   (2009-05-07 14:59) [23]

> sniknik  (07.05.2009 14:32:17)  [17]

В килозеленых


 
Anatoly Podgoretsky ©   (2009-05-07 15:12) [24]

> ford  (07.05.2009 14:58:22)  [22]

У тебя денег нет на 2 гб, а ты про сверхдорогую память, а ведь кроме памяти придется еще покупать и машину и электростанцию :-)
Реально это переход на 64 бита и до 128 ГБ памяти.


 
Медвежонок Пятачок ©   (2009-05-07 15:14) [25]

в первом случае это будет просто
mas[1000]:=mas[1000]+100;


По тебе плачут базы данных. И смеются походу тоже.


 
Sergey13 ©   (2009-05-07 15:20) [26]

> [0] ford ©   (07.05.09 13:29)

А об использовании СУБД не думал?


 
Игорь Шевченко ©   (2009-05-07 15:22) [27]


> методов структурного анализа выделямых частиц при атомном
> взрыве тоже много и реализовать можно по разному


я очень надеюсь, что ты не эту задачу решаешь, так как в противном случае неизвестно даже, куда бежать.


 
ford ©   (2009-05-07 15:44) [28]


> Медвежонок Пятачок ©


> Sergey13 ©   (07.05.09 15:20) [26]

а вы думали откуда я такие масивы заполняю??
из неё родимой  беру данные которые необходимо обсчитать, перестроить согласно алгоритма, и вернуть обратно
ввиде результата
:))
но, сразу предупреждаю, данная задача, через БД не решается
БД - база данных, её основная функция это накапливать данные и выдавать подмножестов данных по запросу
не будете-же вы в СУБД решать диффуравнения :)


 
MBo ©   (2009-05-07 15:47) [29]

Какого типа дерево хранится в массиве?


 
Sha ©   (2009-05-07 15:48) [30]

> ford ©   (07.05.09 14:56) [20]
> но в данном случае я описал задачу в самом первом посте, ну повторюсь,  
> есть массив немерянной длины надо рабоать с его элементами - чиать\писать

че, в ТЗ так прям и написано?


 
ford ©   (2009-05-07 15:52) [31]


> Anatoly Podgoretsky ©   (07.05.09 15:12) [24]

ды причем тут я то :)
ну не все фирмы могу себе позволить купить супер-компьютер
да и технику обновлять ни кто не спешит
сам наверняка сталкивался с такими проблеммами
с другой стороны это правильно, накой ляд выбрасывать рабочую технику, заказчик платит деньги не за то что ты принесеш им счет на новую технику потомучто на их дровах оно не работает
а как раз таки за то что ты придумаешь и реализуешь такой алгоритм который будет работать и на "дровах" типа celeron

По вашему, так посмотреть, работа программиста сводиться к приобретению новой техники.
Например:
"типа да че там мозги колупать, чегото думать
метод сортировки пузырьком нихто не отменял
а то что ему подсунули пару гигов, дык че, купить итанум, планку на 2Т
рэйд пятого уровня на SCSI (или чего там сейчас модно)
да и дело в сконцом :))"


 
Медвежонок Пятачок ©   (2009-05-07 15:55) [32]

но, сразу предупреждаю, данная задача, через БД не решается

Решается и эта и намного более сложные задачи.


 
Sergey13 ©   (2009-05-07 15:55) [33]

> [28] ford ©   (07.05.09 15:44)
> БД - база данных, её основная функция это накапливать данные
> и выдавать подмножестов данных по запросу

А датасет очень похож на "массив немерянной длины " который основан на данных из "файлика" (БД) и позволяет "читать/писать из него данную структуру, со соответствующим смещением в файле по индексу элемента массива"


 
Игорь Шевченко ©   (2009-05-07 15:56) [34]

че ты народу мозги засоряешь ? возьми да измерь, что быстрее


 
ford ©   (2009-05-07 15:59) [35]


> MBo ©   (07.05.09 15:47) [29]
> Какого типа дерево хранится в массиве?


каждый узел имеет 60 ветвей
соответвенно на кадой ветке по узлу тогоже типа что и предыдущий + дополнительное поле

примерно так

т.е. каждый элемент массива имеет "ссылки" на 60 номеров элементов массива+дополнительное поле


 
БарЛог ©   (2009-05-07 16:01) [36]

> ford ©

Давно б взял да проверил опытным путём.


 
Anatoly Podgoretsky ©   (2009-05-07 16:01) [37]

> Игорь Шевченко  (07.05.2009 15:22:27)  [27]

Ничего при его методах успеешь убежать.


 
ford ©   (2009-05-07 16:03) [38]


> Sergey13 ©   (07.05.09 15:55) [33]

логично :)


> Игорь Шевченко ©   (07.05.09 15:56) [34]

да уже к этому сам склоняюсь
:)

едиственно что,
> Anatoly Podgoretsky ©   (07.05.09 13:33) [3]

вот чего еще надо попробовать будет
во всяком случае нашел статейку по поводу загрузки изображений из больших файлов при помощи такой от штуки :)
тока нигде не могу найти ну хоть какуюнить статью подробно описывающую эту технологию, что и как там внутри делается, остается тока догадываться


 
Sha ©   (2009-05-07 16:08) [39]

> ford ©

Тут многие пытаются тебе намекнуть, что программирование это не просто
кодинг на первой пришедшей в голову структуре данных, а параллельная
разработка структуры данных и кода. И если что-то одно из них становится
"немерянным", то это повод для пересмотра обоих составляющих.


 
Anatoly Podgoretsky ©   (2009-05-07 16:13) [40]


> ford ©   (07.05.09 16:03) [38]

Тут дело такое, быстро, но более дорогая машина с хорошими ресурсами и другими алгоритмами доступа.

Или медленно, но медленно - данные ограничиваются только устройством хранения. Спокойно сможешь обрабатывать теже 2 ТБ.

Поэтому середина обеспечивается или MMF или БД. БД расчитаны на обработку особо больших массивов данных.



Страницы: 1 2 3 вся ветка

Текущий архив: 2009.07.12;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.013 c
10-1132239448
George_Debug
2005-11-17 17:57
2009.07.12
Как убить объект из TaskManager a ?


2-1243078038
Pauk
2009-05-23 15:27
2009.07.12
текстовуе ресурсы (RES)


2-1242724147
siealex
2009-05-19 13:09
2009.07.12
Отследить цифру в окне стороннего приложения и нажать в нем же


2-1242803644
Pavlov
2009-05-20 11:14
2009.07.12
выделить программно позицию в TreeView по id этой позиции


2-1242301358
Nil
2009-05-14 15:42
2009.07.12
Объясните пож про сглаживание?