|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Что эффективнее использовать
Всем добрый день
мучает один вопрос - что эффективнее использовать при работе с БД загружать его в память или читать напрямую? Объясню Если нужно читать много данных из БД при запуске приложения - лучше все эти данные сперва грузить в массив или читать напрямую из файла? ДБ MS Access Нет ничего не возможного. Вопрос только во времени... |
#2
|
||||
|
||||
А без чтения из памяти вообще не обойтись. Поэтому её достаточно.
Пишу программы за еду. __________________ |
#3
|
||||
|
||||
Так лучше грузить данные сперва в массив??
Нет ничего не возможного. Вопрос только во времени... |
#4
|
|||
|
|||
На самом деле, как и всегда, все зависит от объема данных и способа и частоты их использования. Так что, давай больше информации - тогда получишь более подходящий под твою ситуацию совет.
|
#5
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#6
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#7
|
||||
|
||||
Дело в том что вот на примере программы гуглмап(установочная для ПК) программа при запуске загружает больше данных и на это уходит не так много времени
А моем случае я читаю из базы 150 строк из двух колонок уходит больше времени может дело в самом БД Аксез? Нет ничего не возможного. Вопрос только во времени... |
#8
|
||||
|
||||
По опыту сборки словарей на акцессовской базе "тормоза" проявляются лишь после 200000-300000 записей, да и то, от версии системного джет-провайдера это зависит и от конструкций запросов, 150 для неё - семечки, возможно, нужно пересмотреть логику работы с этими данными, без кода ведь не видно, как осуществляется доступ, что с ними происходит итд., а с другой стороны, если записей мало, то мож и база совсем не нужна, достаточно текстового файла и ...массива. Другими словами, колитесь, чего творите
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#9
|
||||
|
||||
Вот собственно сам код который грузится после отображения окна программы
Код:
var I: Integer; Marker: TMarker; sub_icon, path: string; begin path := ExtractFilePath(application.ExeName); Form1.GMMarker1.Clear; Form1.Sub_Query.First; if Form1.Sub_Connection.Connected then begin for I := 1 to Form1.Sub_Query.RecordCount do begin Application.ProcessMessages; Marker := Form1.GMMarker1.Add; Marker.Position.Lat := Marker.Position.StringToReal(Form1.Sub_Query.FieldByName('Sub_lat').Value); Marker.Position.Lng := Marker.Position.StringToReal(Form1.Sub_Query.FieldByName('Sub_lng').Value); if FileExists(path + '\IMAGES\'+Form1.Sub_Query.FieldByName('ICON_NAME').Value+'.png') then begin sub_icon:= path + '\IMAGES\'+Form1.Sub_Query.FieldByName('ICON_NAME').Value+'.png'; end else begin sub_icon:= path + '\IMAGES\NN.png'; end; Marker.Icon := sub_icon; Form1.Sub_Query.Next; end; end; Нет ничего не возможного. Вопрос только во времени... Последний раз редактировалось Electronic_Arts, 26.03.2017 в 01:40. |
#10
|
||||
|
||||
Да похоже база какбэ здесь и лишняя, обычный *.ini больше подходит, но вот ещё и текстовый вариант, предварительно в блокноте нужно набрать файл (здесь с названием ini.txt), примерно с таким содержанием
Цитата:
Код:
var i: integer; Marker: TMarker; path: string; sl, st: TStrings; begin path:= ExtractFilePath(Application.ExeName); Form1.GMMarker1.Clear; sl:= TStringList.Create; st:= TStringList.Create; st.Delimiter:=','; sl.LoadFromFile(path + '\ini.txt'); for i := 0 to sl.Count-1 do begin st.DelimitedText:= sl[i]; Application.ProcessMessages; Marker:= Form1.GMMarker1.Add; Marker.Position.Lat:= Marker.Position.StringToReal(st[0]); Marker.Position.Lng:= Marker.Position.StringToReal(st[1]); if FileExists(path + '\IMAGES\' + st[2] + '.png') then Marker.Icon:= path + '\IMAGES\' + st[2] + '.png' else Marker.Icon:= path + '\IMAGES\NN.png'; end; sl.Free; st.Free; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#11
|
||||
|
||||
База не лишняя - так как далее придется перенести это на MYSQL я как бы на начальном уровне беспокоюсь что сейчас там 150 записей - что будет если она будет 15000 пользователю придется ждать 5 минут что бы программа загрузилась? вот в чем беда
Нет ничего не возможного. Вопрос только во времени... |
#12
|
||||
|
||||
Стесняюсь спросить, а зачем все стопятьсот объектов типа TMarker сразу создавать, может сначало - только самые нужные, а остальные в процессе, по мере необходимости подгружать?
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#13
|
||||
|
||||
Это один регион и все объекты хотя бы одного региона должны быть загружены - и дело в том что даже если в процессе их грузить все равно такая же проблема будет что в начале ждать что в середине какая разница
Я больше всего начинаю думать что виноват тут сама библиотека GMLIB. Так как код написан правильно. Нет ничего не возможного. Вопрос только во времени... |
#14
|
||||
|
||||
A на Delphi можно сделать так чтобы грузились только те объекты которые в области видимости?? как определить поле видимости??
Нет ничего не возможного. Вопрос только во времени... |