Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2012, 22:11   #11
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Например IBProvider free OLE DB провайдер, бесплатный и удобный
А зачем он нужен? Я что-то никогда его не использовал. Вполне обходился.
Прик вне форума Ответить с цитированием
Старый 17.04.2012, 22:12   #12
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию

Т.е. тогда как понимаю мне остается лишь ElevateDB либо AbsoluteDatabase (якобы как Elevate, бесплатна, но вроде как более медленная), так как в итоге после компиляции будет встроена в exe-шник

Последний раз редактировалось Freimaks; 17.04.2012 в 22:16.
Freimaks вне форума Ответить с цитированием
Старый 17.04.2012, 22:30   #13
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Т.е. тогда как понимаю мне остается лишь ElevateDB либо AbsoluteDatabase ...
А из каких посылок это понимание возникло?

Наверное в вашей ситуации критерий выбора СУБД скорость поиска (т.е. скорость выборки данных). А будет она встраиваться в екзешник или будет лежать рядом с исполняемым в виде нескольких файлов - какая разница.
Основной критерий то не в этом.
Хорошой сайт sql.ru, где можно и поискать по теме и поспрашивать какая СУБД шустрее в этой ситуации.
Прик вне форума Ответить с цитированием
Старый 17.04.2012, 22:37   #14
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
А из каких посылок это понимание возникло?

Наверное в вашей ситуации критерий выбора СУБД скорость поиска (т.е. скорость выборки данных). А будет она встраиваться в екзешник или будет лежать рядом с исполняемым в виде нескольких файлов - какая разница.
Основной критерий то не в этом.
Хорошой сайт sql.ru, где можно и поискать по теме и поспрашивать какая СУБД шустрее в этой ситуации.
Щас как раз на sql.ru читаю статейку про Absolute.
Тогда спрошу чего там посоветуют. Спасибо за советы!!!!!
Freimaks вне форума Ответить с цитированием
Старый 19.04.2012, 19:55   #15
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию Оптимизация программы

Товарищи, прошу помощи в оптимизации того, что я сваял. Чую, что что-то можно сократить, но как это сделать я даже не догадываюсь.
Суть вопроса: можно ли сократить код и есть вероятность что я что-то не так сделал (в плане логики синтаксиса и применения классов\записей).
Можно повлиять на скорость чтения\записи, т.к. она в разы ниже чем в родной программе-обработчике (это вообще архипроблема).
Подскажите, как полностью вычистить память после отработки каждого файла (пока получается чистить только TDictionary, а вот почистить класс никак не получается).

Если кто-то что-нибудь предложит - буду очень рад!!!

P.S. Код прикреплен в файлике. Код рабочий, прога выполняет 75% того, что должна делать.
Вложения
Тип файла: txt code.txt (12.3 Кб, 125 просмотров)
Freimaks вне форума Ответить с цитированием
Старый 19.04.2012, 20:47   #16
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

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

Выложите нормальный полный код. Файлы .pas, .dfm, dpr.
Цитата:
Код рабочий, ...
А это что значит:
Код:
  Dictionary:TDictionary<TPair, TBinPoints>;
  Dictionary1:TDictionary<integer, integer>;
Объявления переменных, которые спокойно компилируются? Какой же это рабочий код...
Где описание класса TDictionary? Если, конечно, это класс.
Что означает: "75% того, что должна делать". Как вообще, этот процент определен?
Зачем так много конструкторов?
Нафига нужна секция published?
Где можно увидеть создание класса TBinPoints и обращение к его методам и свойствам?
И главное, что должен делать этот код?
Это всего лишь предварительные вопросы.
Прик вне форума Ответить с цитированием
Старый 19.04.2012, 21:03   #17
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию

75% того, что должна делать - это чисто мое определение, т.к. у проги есть 4 основных варианта работы из которых сейчас выполняется 3.
Код:
Dictionary:TDictionary<TPair, TBinPoints>;
Это использование TDictionary из Generics.Collections.
Нафига нужна секция published? - Вот таких вопросов я и ждал. Дело в том, что я впервые делаю что-то серьезное и первый раз столкнулся с созданием нового класса. Поэтому сделал как в учебниках.
3 конструктора из-за трех видов структур данных (отличаются дополнительными полями).
Класс TBinPoints используется вот в этом куске
Код:
BaseStream.Read(RPointsTime, SizeOf(RPointsTime));
BinPoints:=TBinPoints.Create(
RPointsTime.PointCoordX,
RPointsTime.PointCoordY,
RPointsTime.PointCoordZ,
RPointsTime.PointCode,
RPointsTime.PointEcho,
RPointsTime.PointFlag,
RPointsTime.PointMark,
RPointsTime.PointLine,
RPointsTime.PointInt,
RPointsTime.PointTime);
Что делает код:
1. Считываются данные из бинарных файлов с указанной структурой
2. Анализируется наличие дублей (с помощью TDictionary)
3. Формируется отчет и при необходимости записываются очищенные от дублей данные
Freimaks вне форума Ответить с цитированием
Старый 19.04.2012, 21:13   #18
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию

Вот полный код
Вложения
Тип файла: rar TPMAK.rar (5.2 Кб, 6 просмотров)
Freimaks вне форума Ответить с цитированием
Старый 19.04.2012, 23:18   #19
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Увидел битву умов на sql.ru по этому вопросу. Окромя словоблудия никакой помощи. Основные предложения были - применять хеш таблицы.
Предлагающий применять TBucketList как-то не понимает что-ли, что в конечном итоге вся работа выльется в те же два цикла - чтение из файла и проверку на дубликатность.
К тому же, TDictionary использует механизм TBucketList. И, собственно, TDictionary - это и есть механизм для создания и манипулирования хеш-таблицами.

Может быть без БД будет сложно ускорить дело. Разумеется, это субъективно.

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

Хотя, как видится, узкое место здесь чтение и запись в файл.
А вот eсли читать (писать) не отдельными структурами, а блоками структур... Или прочесть весь файл в память, а затем уже применять TDictionary...
Без реального материала (файла, который анализируется) - это все голое теоритизирование.

Цитата:
Подскажите, как полностью вычистить память после отработки каждого файла (пока получается чистить только TDictionary, а вот почистить класс никак не получается).
Если использовать TObjectDictionary, то класс этот может сам освобождать память от объектов, надо только указать какой элемент из пары требует (или оба) освобождение памяти:
Код:
  Dictionary := TObjectDictionary<TPair, TBinPoints>.Create([doOwnsValues]);
Еще пара замечаний.
В деструкторе класса нельзя использовать глобальные переменные этого же класса.
Потому деструктор в классе TBinPoints не нужен - он ничего не делает.
Освобождение памяти от объектов корректнее выполнять, вызывая метод Free, а не Destroy.

Последний раз редактировалось Прик; 20.04.2012 в 07:51.
Прик вне форума Ответить с цитированием
Старый 20.04.2012, 08:35   #20
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию Примеры данные, с которыми работает программа

Сегодня попытаюсь сделать чтение файла блоками структур - хотя для этого придется опять углубиться в теорию и учебники.
Ну и ради примера выкладываю 2 файла типовых данных (структура с отметками времени и без цвета). Файл With_thinpoints - содержит сдвоенные данные (кусок), файл Without_thinpoints - каждая точка уникальная.
Я все проверил - программа все определяет точно, пишет тоже нормально (правда надо будет узнать влияние сортировки, т.к. точки несортированы вообще никак).

http://www.programmersclub.ru/работа...ссивом-данных/
Freimaks вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с большим количеством текста в String иTextbox Дмитрий999 Visual C++ 0 20.02.2012 20:07
Вывод данных в excel - массивом данных sergey113 Помощь студентам 4 22.08.2011 17:16
работа с большим объемом данных Ckif Microsoft Office Excel 1 14.09.2010 17:05
импорт из txt, работа с массивом данных, экспорт в txt Danara Microsoft Office Excel 4 31.03.2010 00:26
Метод для управления большим количеством данных eda Microsoft Office Excel 0 13.07.2009 10:50