#android #android_sdk #orm
Нужен совет тех, кто пользовался GreenDAO. Скажите, что лучше использовать (с точки зрения производительности) при написании приложения связанного с бд sqlite, стандартные средства Android SDK или ORM GreenDAO?
Ответы
Ответ 1
SQLite (и инструменты SDK для работы с ней) в общем в работе во много быстрее, чем GreenDAO - обертка для этой БД, написанная на Java, но некоторые операции greenDAO выполняет быстрее, что не мешает ей существенно проигрывать SQLite в "общем зачете" Из всех ORM под андроид быстрее (примерно в два раза) SQLite только Realm, написана на C++ "чистая" ORM (не базируется на SQLite, не является прослойкой, а использует собственный движок БД), но она пока в статусе беты (мне впрочем это не мешает пользоваться ей при каждом случае и вспоминать, как страшный сон, всю эту мороку с SQLite и обеспечением ее работы в андроид)Ответ 2
GreenDao использует стандартные средства Android SDK. Она только генерирует за вас оптимизированный код, который бы вам самим пришлось писать без использования ORM. По производительности GreenDao будет побыстрее в некоторых моментах, например в селектах, чем самописный код. Это достигается из-за того, что для заполнения сущности из курсора GreenDao генерирует примерно следующий код: public class SomeEntity { public SomeEntity(int id, String text, boolean isBoolean, int someNumber){ //... } } SomeEntity entity = new SomeEntity( cursor.getInt(0), cursor.getString(1), cursor.getBoolean(2), cursor.getInt(3) ) В то время, как вы сами бы написали примерно так: SomeEntity entity = new SomeEntity( cursor.getInt(cursor.getColumnIndex(ID_COLUMN)), cursor.getString(cursor.getColumnIndex(TEXT_COLUMN)), cursor.getBoolean(cursor.getColumnIndex(BOOLEAN_COLUMN)), cursor.getInt(cursor.getColumnIndex(NUMBER_COLUMN)) ) Т.е. во втором случае тратится дополнительное время на поиск номера колонки по названию. Так же, вы можете посмотреть сгенерированные GreenDao классы для работы с БД и посмотреть что скрыто под капотом. Кто знает, может вы сами пишете достаточно быстрый код и вам не нужна никакая ORM.
Комментариев нет:
Отправить комментарий