![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мастера, помогите еще раз. В моей проге... [D6, Win95/98, WinME]
ProtoSoft © (2002-11-27 23:11:00)Мастера, помогите еще раз. В моей проге куча TStringList аж 15 штук и еще просит больше. Что посоветуете придумать вместо них, мне главное надо хранить набор строк, допустим я могу написать на ASMe такую штуку: {Формат данных}
{Длинна поля} - 1 байт (мне больше #FF не надо)
{Строка} - ее длинна определяется в первом поле
Все остальные будут NumZ*(1+Len(Длина поля)) вроде.
Это понятно, но это что - работать с файлом, а мне нуно, чтоб быстрее работало. Ну если там файл более 10 мб. Весь его подгружать фигня, в буфер по 2 кило, тоже не очень.
ProtoSoft (2002-12-05 01:24:00) [1]//Наезжалкин
Я тут немного придумал с оптимизацией, а на асме лабанить это не так уж и сложно и не так уж и долго. Я имел ввиду, что файл в TStringList грузиться полностью, и иза этого частенько страдают ресурсы програмки. Бывают глюки. Я тут наваял пару процедурок, которые типа TStringList, только файл не подгружают полностью в массив, а читают его нужными частями + индексный файл, работает в 5 раз быстрее. Уже лучше! Но тут опять-так фигня в том, что база растет просто на глазах! Нет смысла в этом, т.к. я уже писал, запись в поле у меня может быть размером от 5 байт и до бесконечности, ну хотя бы - до 500-600 байт. Я тут добавил такую штуку, Поля короткие определенной длинны. 20 байт. Туда записывается строка, и если она не помещаеться, то добавляется новая запись, а в предыдущую строку записываеться указатель на продолжение. База уменьшилась в 5 раз! Уже лучше! Посмотрим, что будет дальше!
А теперь може кто расскажет, как организовать вот такие вещи:
1. Поиск в TWebBrowsere (в загруженном тексте)
2. Как мне взять из поля адрес всех загруженных IE, а также текст из IE!
3. Как узнать, на какой стадии загрузка страницы в IE!
Наезжалкин (2002-12-03 10:47:00) [2]Переписывать TStringList на ассемблер -- пустая потеря времени. Нужно придумать более эффективный способ хранения данных, чем TStringList. Готового рецепта здесь нет. Думать, думать, ДУМАТЬ!...
ProtoSoft (2002-12-03 10:11:00) [3]//А по какому параметру не устраивает TStringList?
Все устраивеат, но когда их много, то ресурсов для проги частенько не хватает, у меня по крайней мере все глючило.
Сейчас немного оптимизировал код, поуберал где мог TStringList стало работать лучше, глюков нет. Но нужно более конкретное решение!
Fantasist (2002-11-30 02:55:00) [4]А по какому параметру не устраивает TStringList?
ProtoSoft (2002-11-28 23:43:00) [5]False_Delirium
//для максимально бытрой работы сделай файл индексов адресации для поиска....
Это как, по первой букве? Всмысле на букву А - Смещение такое, на Б - такое на Я такое, я вроде так понял.
////// Но вот почему меня и
быстрее - BD...а так...фиксированный размер данных в строке ... лучше типизированный файл по Record`у ...
а там - seek ...
Но тут вот в чем весь трабл, размер моей базы будет расти как на дрожжах, т.к. у меня данные в записи могут быть от 0 до бесконечности, в среднем где-то получаеться от 200 б до 1 кб, поэтому пришлось поизвращаться, зато файл и размеры имеет хорошие!
False_Delirium (2002-11-28 00:30:00) [6]быстрее - BD...
а так...
фиксированный размер данных в строке ... лучше типизированный файл по Record`у ...
а там - seek ...
если с файлами... для максимально бытрой работы сделай файл индексов адресации для поиска....
ProtoSoft (2002-11-27 23:51:00) [7]Ну че никто не знает?