Недавно при переводе проекта с .net core 3.1 на 5.0 решил перейти с Pomelo.EntityFrameworkCore.MySql на официальный MySQL коннектор(MySql.Data.MySqlClient) и наткнулся на резкое падение производительности приложения.
Заинтересовался и провел тесты. Разница в скорости вычитки данных составила 10-30 раз в зависимости от условий теста.
Тесты проводил на локальной базе и на простом запросе, чтобы минимизировать задержки со стороны MySQL сервера. Тестировал на Windows и Ubuntu, на .net core 3.1 и .net core 5 - результаты сравнимы.
Вот код теста, он одинаков для обоих библиотек.
List<uint> ids = new List<uint>();
using (MySqlConnection connection = new MySqlConnection(str))
{
connection.Open();
DateTime now = DateTime.Now;
using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM Transactions;", connection))
using (MySqlDataReader reader = cmd.ExecuteReader())
while (reader.Read())
ids.Add(reader.GetUInt32("ID"));
Console.WriteLine("Loaded " + ids.Count + " items. App working time = " + (DateTime.Now - now).TotalSeconds + " sec");
}
Есть идеи как объяснить эту ситуацию?