|
А БД это действительно лучше/быстрее? Возникли сомнения.
|
|||
---|---|---|---|
#18+
Короче заменил процедуру загрузки из 2-х текстовух по 600-700 строк на процедуру загрузки из 2-х таблиц по 600-700 строк (данные те же) Усе как Shocker.Pro научил: >ForwardOnly, ReadOnly (это самый быстрый тип)), грузим данные в рекордсет, потом в ListView возникло ощущение что база "подтормаживает" Не поленился добавить /verbose в обе "версии": Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Вкратце: из текстовухи в более чем 2 раза быстрее. На пень-3 8 сек ждать вместо 3-х. Круто, БД блин. То ли я где-то лоханулся. Напр. злоупотребляю проверкой наличия поля в таблице: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Т.е. я эту FieldExistsInRS выполняю (число полей)х(число строк)~700x10=7000 раз для каждой таблицы Перебор вообще-то, 10раз по идее наверно достаточно для каждого поля по разу. ===================================== То ли я сильно лоханусь если с БД свяжусь в принципе. Чего не сделал изначально именно на основании этого подозрения. Мнения будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 07:01 |
|
А БД это действительно лучше/быстрее? Возникли сомнения.
|
|||
---|---|---|---|
#18+
Убрал ляп с мульти-опросом полей, стало вот так вот Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Ну т.е. на операции открытия таблицы и чтения в лоб сверху вниз выигрыш 18-20% по скорости по сравнению с текстовухой. Не фонтан! Или все-таки остались ляпы... или преимущества на других операциях надо смотреть? Не, ну 300миллисек. на перетарабанить в ListView 1400 записей это нормально, бороться думаю особо смысла нет. Если еще базу считывать не в FormLoad, а после вывода формы на экран, то вообще ничего не заметим, но эт. детали не по делу. То ись где преимущества? 300мс вместо 400мс после стольких мудоханий это не преимущество. Надо правда смотреть как оно в динамике будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 08:43 |
|
А БД это действительно лучше/быстрее? Возникли сомнения.
|
|||
---|---|---|---|
#18+
Дмитрий77, На сотню тысяч с каким нибудь фильтром померяй и сравни. Для мелких данных БД обычно не нужна, достаточно любой сериализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 09:53 |
|
А БД это действительно лучше/быстрее? Возникли сомнения.
|
|||
---|---|---|---|
#18+
Дмитрий77 Код: plaintext 1. 2.
По первой строке: есть подозрение в не очень корректном подходе к работе с БД. К примеру, у меня в текушем проекте количество возвращаемых рекордсетов измеряются тысячами и только буквально в паре мест я заведомо не знаю, какой точно набор полей мне вернется. Ну без задачи все же трудно судить. По второй строке: если в базе поле start_datetime заведомо Date, то и нечего его проверять - вернется безусловно Date. Если же есть подозрение, что структура БД может быть испорчена чьими-то кривыми ручонками, то лучше проверять структуру базы при старте проекта и отказываться работать с битой базой, чем проверять каждый раз при выборке. Ну и, естественно, во внутренних циклах лучше не делать ничего лишнего - это общее правило. Время по большей части расходуется на загрузку данных в тормозной ListView, так что для более корректного сравнения производительности лучше просто перебрать данные, никуда их не выводя. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 10:27 |
|
А БД это действительно лучше/быстрее? Возникли сомнения.
|
|||
---|---|---|---|
#18+
Shocker.ProДмитрий77 Код: plaintext 1. 2.
По первой строке: есть подозрение в не очень корректном подходе к работе с БД. Дык сразу про подозрение написал, 20 циклов достаточно вместо 20000 , да еще в каждом перебор всех столбцов, как только понял и исправил, отыграл все лишнее время. Shocker.ProПо второй строке: если в базе поле start_datetime заведомо Date, то и нечего его проверять - вернется безусловно Date. Э нет. start_datetime заведомо Date -это да. start_datetime у меня и вправду всегда должно быть корректно, а вот есть еще end_datetime, так вот оно может быть вообще пустое , и тогда EndTime кот. Date ругнется, при наличии EndTime я вычисляю Duration=EndTime-StartTime, т.е. здесь без аккуратности никак. Shocker.ProВремя по большей части расходуется на загрузку данных в тормозной ListView, так что для более корректного сравнения производительности лучше просто перебрать данные, никуда их не выводя. Вынужден подозревать что это так. Как я упомянул 20-25% скорости (100мс) я честно уже отыграл. (отбив при этом свои 350мс, которые у меня отобрал неграмотный пункт 1). Думаю что преимущества надо смотреть на динамике(замена чтения/удаления файла на чтение оч.короткой "таблицы обмена"),где в Listview меняется 1 строчка, а не 700, а не пытаться выиграть 10миллисекунд на статике. Про пень-3 я не говорю, тест был сделан только чтоб точно понять "дело дрянь", счас уже таких особо не у кого нет. Чтоб не чувствовать этих 3-х секунд на пнях надо я уже сказал что сделать, грузиться из базы при уже загруженной форме, это как раз бантики но не суть. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 11:00 |
|
А БД это действительно лучше/быстрее? Возникли сомнения.
|
|||
---|---|---|---|
#18+
Дима, я-бы выбрал файлик только для ... даже не знаю для чего, потому что телефонный справочник у меня был в БД. Правда это был справочник на несколько десятков тысяч абонентов и редкоизменяемый, а в основном нужный как справочник, где поиск происходил по фамилии, должности, адресу. И чесно говоря файлик для меня это какие-то настройки, импорт-экспорт и какие-то учебные задачки. Функционал embeded-sql-серверов практически не отличается от "взрослой" редакции, места занимает не много, а выигрыш во многом - можно использовать развитый функционал SQL-серверов, - переход от однопользовательской редакции к многопользовательской - это простая смена embeded-SQL-сервера на "взрослую" редакцию(при правильном проектировании БД естественно :) ). Как-то так. :) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 11:25 |
|
|
start [/forum/topic.php?fid=60&msg=37070790&tid=2159045]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 117ms |
0 / 0 |