Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
scorpion235
Member

Откуда:
Сообщений: 44
Список DataSet'ов

1. TJvMemoryData
Разработчик: сообщество JEDI Visual Component Library (JCL + JVCL)
JCL (версия 2.8)
JVCL (версия 3.50)
Официальный сайт: http://jvcl.delphi-jedi.org/

2. TMemTableEh
Разработчик: EhLib
Версия: 9.0.040
Официальный сайт: http://www.ehlib.com/

3. TdxMemData
Разработчик: DevExpress
Версия: 15.2.2
Официальный сайт: https://www.devexpress.com/

4. TkbmMemTable
Разработчки: Components4Developers
Версия: 7.74.00 Professional Edition
Официальный сайт: http://www.components4developers.com/

Параметры сравнения DataSet'ов
1. Вставка записей
2. Сортировка записей

Более подробно в моей статье https://geektimes.ru/post/298725/
9 мар 18, 14:35    [21246026]     Ответить | Цитировать Сообщить модератору
 Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
scorpion235
Member

Откуда:
Сообщений: 44
Извиняюсь, пост здесь: https://geektimes.ru/post/298893/
9 мар 18, 14:37    [21246030]     Ответить | Цитировать Сообщить модератору
 Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
scorpion235
Member

Откуда:
Сообщений: 44


К сообщению приложен файл. Размер - 8Kb
9 мар 18, 14:46    [21246048]     Ответить | Цитировать Сообщить модератору
 Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 262
а DevExpress и EhLib разве не платные?
9 мар 18, 14:51    [21246052]     Ответить | Цитировать Сообщить модератору
 Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
edruzenko
Member

Откуда: Одесса
Сообщений: 202
после фразы
"Но воспользоваться TkbmMemTable можно только с Delphi XE2."
доверие к замерам сильно упало
9 мар 18, 15:15    [21246076]     Ответить | Цитировать Сообщить модератору
 Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
scorpion235
Member

Откуда:
Сообщений: 44
qwertEHOK, только JvMemoryData - бесплатный DataSet
9 мар 18, 16:28    [21246147]     Ответить | Цитировать Сообщить модератору
 Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6140
scorpion235,

  • Раньше работал с TClientDataSet.
  • Потом один проект был, где нужена была поддержка SQL, воспользовался TSQLMemTable (http://www.aidaim.com/in-memory_sql_database_delphi.htm)
  • В последние годы для простых случаев пользуюсь TVirtualTable (https://www.devart.com/virtualdac)

    Странно, что два последних в сравнение не включили. Вроде известные компоненты.
  • 9 мар 18, 16:32    [21246153]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Кроик Семён
    Member

    Откуда: СПб --> Dortmund
    Сообщений: 6140
    P.S.
    Кстати, вроде бы есть еще возможность для этих целей воспользоватьСя SQLite'ом. Если не ошибаюсь, именно таким был in-memory Dataset в AnyDAC'e
    9 мар 18, 16:37    [21246157]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    scorpion235
    Member

    Откуда:
    Сообщений: 44
    Кроик Семён
    Странно, что два последних в сравнение не включили. Вроде известные компоненты.
    Не слышал о таких DataSet'ах, посмотрю. Devart точно должен качественный продукт сделать.
    Возможно в будущем напишу более развернутую статью. Так же нужно подумать как расширить
    список требований для сравнения.
    9 мар 18, 17:15    [21246180]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    rgreat
    Member

    Откуда:
    Сообщений: 4251
    Странное сравнение.

    В нем отсутствует референс. TClientDataSet.
    9 мар 18, 17:20    [21246183]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    rgreat
    Member

    Откуда:
    Сообщений: 4251
    Да и TFDMemTable неплохо было-бы добавить.
    9 мар 18, 17:21    [21246184]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Кроик Семён
    Member

    Откуда: СПб --> Dortmund
    Сообщений: 6140
    Express edition of TVirtualTable and TVirtualDataSet от Devart еще и бесплатные
    9 мар 18, 17:23    [21246186]     Ответить | Цитировать Сообщить модератору
     Бесплатная утилита для реиндекса для MS SQL Express (и не только)  [new]
    qwertEHOK
    Member

    Откуда: Волгоград
    Сообщений: 262
    а так же неплохо бы увидеть код и добавить еще 1-2 СУБД
    9 мар 18, 17:54    [21246220]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    scorpion235
    Member

    Откуда:
    Сообщений: 44
    qwertEHOK
    а так же неплохо бы увидеть код и добавить еще 1-2 СУБД

    Скорость работы с СУБД не рассматривается
    9 мар 18, 18:07    [21246238]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    scorpion235
    Member

    Откуда:
    Сообщений: 44
    Кроик Семён
    TSQLMemTable (http://www.aidaim.com/in-memory_sql_database_delphi.htm)
    Посмотрел этот DataSet
    1. Метод LoadFromDataSet отсутствует
    2. Ручная загрузка данных около 6,8 сек
    3. Метода для сортировки данных нет
    9 мар 18, 18:30    [21246257]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    scorpion235
    Member

    Откуда:
    Сообщений: 44
    Кроик Семён
    TVirtualTable (https://www.devart.com/virtualdac)

    Поставил этот компонент, метода LoadFromDataSet нет, методов для сортровки полей нет.
    Судя по описанию компонент не особо подходит для загрузки данных из базы данных:
    The TVirtualDataSet component is data wrapper that doesn't store data in memory and interacts
    with data using event handlers. It allows to represent arbitrary data (arrays, lists, objects, etc.)
    as TDataSet descendants and link it with any DB-aware components to display data or modify it.

    В демках этот компонент отображает данные из TList
    9 мар 18, 19:49    [21246343]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    чччД
    Guest
    scorpion235,

    а какова цель исследования? Ну, вот компонент А быстрее чем компонент Б, выяснили. И что?
    9 мар 18, 20:24    [21246375]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Кроик Семён
    Member

    Откуда: СПб --> Dortmund
    Сообщений: 6140
    scorpion235
    Кроик Семён
    TSQLMemTable (http://www.aidaim.com/in-memory_sql_database_delphi.htm)
    Посмотрел этот DataSet
    1. Метод LoadFromDataSet отсутствует
    2. Ручная загрузка данных около 6,8 сек
    3. Метода для сортировки данных нет


    Есть у него всё. По-другому только называется.
    А что насчет сортировки, он же SQL!
    Т.е. работает select * from ... order by
    9 мар 18, 20:50    [21246415]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    ma1tus
    Member

    Откуда:
    Сообщений: 543
    scorpion235
    Кроик Семён
    TVirtualTable (https://www.devart.com/virtualdac)

    Поставил этот компонент, метода LoadFromDataSet нет
    Assign

    scorpion235
    методов для сортровки полей нет
    IndexFieldNames

    scorpion235
    Судя по описанию компонент не особо подходит для загрузки данных из базы данных:
    The TVirtualDataSet component is data wrapper that doesn't store data in memory and interacts
    with data using event handlers. It allows to represent arbitrary data (arrays, lists, objects, etc.)
    as TDataSet descendants and link it with any DB-aware components to display data or modify it.

    В демках этот компонент отображает данные из TList
    Это другой компонент.
    9 мар 18, 20:57    [21246424]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    YuRock
    Member

    Откуда: Донецк
    Сообщений: 3508
    scorpion235
    Судя по описанию компонент не особо подходит для загрузки данных из базы данных
    Век живи - век учись.
    Оказывается, никогда бы не подумал, MemDataset'ы нужны для загрузки данных из БД.
    9 мар 18, 21:00    [21246426]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Dimitry Sibiryakov
    Member

    Откуда:
    Сообщений: 45432

    YuRock
    никогда бы не подумал, MemDataset'ы нужны для загрузки данных из БД.

    Ну это модно, стильно, молодёжно. Прогревает процессор и пожирает память, чем ускоряет
    гибель человечества и обновление парка компьютеров на предприятии.

    Posted via ActualForum NNTP Server 1.5

    9 мар 18, 21:05    [21246433]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Гаджимурадов Рустам
    Member

    Откуда:
    Сообщений: 58918
    Dimitry Sibiryakov
    Все они проигрывают простому array of record.

    Дегтярев Евгений
    пузомерка
    если уменьшить кол-во данных в 10-100 раз, то разница во времени для пользунов станет сильно не существенна
    9 мар 18, 23:17    [21246533]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    vavan
    Member

    Откуда: Казань
    Сообщений: 3087
    у арефьева есть проект-бенч для насилования датасетов. в свое время довертел свой cds/vmidas что он на некоторых задачах обгонял лидера kbmmt
    12 мар 18, 10:41    [21248768]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Мимопроходящий
    Member

    Откуда: бурятский тундрюк, эсквайр
    Сообщений: 28960

    я понял! (С)

    это новый адепт секты свидетелей Вострикова...

    Posted via ActualForum NNTP Server 1.5

    12 мар 18, 12:09    [21249114]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Cheese)))
    Member

    Откуда: Местный
    Сообщений: 494
    scorpion235,

    автор
    2. TMemTableEh
    Разработчик: EhLib
    Версия: 9.0.040

    Старая У вас версия, вы бы свежую взяли, там чутка ускорили убрав FindField на каждую запись из LoadFromDataSet. Нужно еще отказаться от инциализации кэша фиелдов если записей нет и тогда будет более оптимально.

    Сортировка могла бы быть быстрее если бы например дважды каждое значение не проверяли бы функциями IsEmpty, IsNull - я указал Диме об этом, но он более важными вещами занят.

    По моем тестам TVirtualDataSet уделывает EhLib раз в 10 по скорости, что печалит меня.
    12 мар 18, 13:54    [21249662]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    чччД
    Guest
    Cheese)))
    ...
    По моем тестам TVirtualDataSet уделывает EhLib раз в 10 по скорости, что печалит меня.

    А если бы всего в пять раз уделывал - ты бы печалился?
    12 мар 18, 14:03    [21249709]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    pal_bil
    Member

    Откуда:
    Сообщений: 25
    А мне больше понравилась первая статья про учёт расходов.
    12 мар 18, 14:15    [21249758]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    LSV
    Member [заблокирован]

    Откуда: Киев
    Сообщений: 30818
    Cheese)))
    ...По моем тестам TVirtualDataSet уделывает EhLib раз в 10 по скорости, что печалит меня.
    Там можно создавать индексы, кот. могут заметно улучшить ситуацию. Мне помогало примерно в 2 раза.
    12 мар 18, 14:16    [21249763]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    scorpion235
    Member

    Откуда:
    Сообщений: 44
    Cheese))),
    пробовал TVirtualDataSet. по скорости уступает всем DataSet'ам из статьи
    12 мар 18, 15:55    [21250166]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Cheese)))
    Member

    Откуда: Местный
    Сообщений: 494
    чччД
    Cheese)))
    ...
    По моем тестам TVirtualDataSet уделывает EhLib раз в 10 по скорости, что печалит меня.

    А если бы всего в пять раз уделывал - ты бы печалился?

    Да.

    scorpion235
    Cheese))),
    пробовал TVirtualDataSet. по скорости уступает всем DataSet'ам из статьи

    Очевидно по разному тестировали.
    На крайней версии EhLib у вас какие результаты по LoadFromDataSet? Заметили ли прибавку скорости?
    13 мар 18, 06:34    [21251558]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Uridian
    Member

    Откуда: Lobnya
    Сообщений: 209
    почему в списке отсутствует TFDMemTable?
    13 мар 18, 10:12    [21251939]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    defecator
    Member

    Откуда:
    Сообщений: 38469
    Uridian
    почему в списке отсутствует TFDMemTable?

    потому что ТС очень мало знает про другие DataSet
    13 мар 18, 10:17    [21251955]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Sinemurius
    Member

    Откуда:
    Сообщений: 19
    Добрый день.

    Мы в рамках одного проекта сделали MemoryDataset, как промежуточный результат.

    Получилось вроде неплохо.
    Есть LoadFromDataset, IndexFieldNames (примерно как в TClientDataset, но поддерживается DESC, NULL_FIRST).
    Скорости работы также уделяли значительное внимание.

    Если интересно попробовать, то dpk с исходниками прикладываю к сообщению.
    18 мар 18, 09:42    [21264719]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Sinemurius
    Member

    Откуда:
    Сообщений: 19
    Извиняюсь. Похоже к сообщению нельзя прикреплять файлы.


    11
    18 мар 18, 09:48    [21264722]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    Sinemurius
    Member

    Откуда:
    Сообщений: 19
    https://yadi.sk/d/qq2ljLSL3TVFng
    18 мар 18, 09:50    [21264723]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    scorpion235
    Member

    Откуда:
    Сообщений: 44
    Sinemurius, интересный компонент. Установил, попробовал, грузит данные быстро.
    Только не смог загрузить через этот MemoryDataset данные типа Float/BCD и Blob.
    И не нашел методов по сортировке записей (SortOnFields/SortByFields/SortOn).
    10 июн 18, 12:03    [21483339]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    чччД__
    Guest
    scorpion235
    Sinemurius, интересный компонент. Установил, попробовал, грузит данные быстро.
    Только не смог загрузить через этот MemoryDataset данные типа Float/BCD и Blob.
    И не нашел методов по сортировке записей (SortOnFields/SortByFields/SortOn).
    Товарищ изыскатель самого быстрого датасета, а ты в реальных проектах тоже данные сперва в TpFIBDataSet грузишь, а лишь потом в T[mem]DataSet-ы, как в твоей чудесной статье?
    11 июн 18, 00:26    [21484147]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    scorpion235
    Member

    Откуда:
    Сообщений: 44
    чччД__,
    чччД__
    Товарищ изыскатель самого быстрого датасета, а ты в реальных проектах тоже данные сперва в TpFIBDataSet грузишь, а лишь потом в T[mem]DataSet-ы, как в твоей чудесной статье?
    Спасибо за "чудесную". Конечно так делаю, статья основана на лучших реализациях других программистов и на личном опыте. kbmMemTable рулит!
    11 июн 18, 08:20    [21484252]     Ответить | Цитировать Сообщить модератору
     Re: Delphi: самый быстрый DataSet (TJvMemoryData, TMemTableEh, TdxMemData, TkbmMemTable)  [new]
    чччД__
    Guest
    Правильно, теши кол и дальше, коли своего лба не жалко.
    11 июн 18, 08:33    [21484271]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: 1 2      [все]
    Все форумы / Delphi Ответить