На ваш вопрос практически невозможно ответить без контекста. Вопросы, которые я хотел бы задать в ответ, начинаются с:
- Что за приложение? Data-ориентированный? Бизнес-логика ориентирована?
- Сколько данных мы говорим?
- О каких операциях с данными мы говорим? В основном читает? В основном пишет?
Как правило, LLBLGen работает очень хорошо. Мы использовали его в 10+ проектах (включая несколько проектов масштаба предприятия), где я работаю, и те немногие проблемы, которые мы наблюдали с производительностью, всегда были результатом неправильного понимания того, что делал код (есть кривая обучения) или плохо реализованная физическая модель (например, отсутствующие индексы).
Две структуры по-разному подходят к проблеме доступа к данным. Операции LLBLGen обычно переводятся в SQL, что довольно легко понять, если у вас сильный фон данных. NHibernate использует сессии и кэш для хранения данных в памяти, когда это возможно, для повышения производительности ( отказ от ответственности: я не эксперт NHibernate ). LLBLGen не поддерживает такого рода концепцию; вместо этого он работает в отключенном состоянии и сохраняет информацию об отслеживании изменений непосредственно в своих объектах сущности.
Суть в том, что подходы, используемые в фреймворках, очень разные, и трудно предсказать, какие из них будут работать лучше, не зная больше о том, что делает ваша система. В правильных руках любая инфраструктура может использоваться для разработки системы, в которой производительность доступа к данным не является основным узким местом производительности.