Форум: "Прочее";
Текущий архив: 2009.07.12;
Скачать: [xml.tar.bz2];
Внизчто быстрее Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.037 c