Да собственно никак. Когда в последний раз смотрел реализацию для публикации сообщений в Кафку, обнаружил создание отдельного продюсера под каждый топик, закрыл и больше не возвращался к этой либе.
На основе последних бенчмарков EF Core 6.0 c Dapper, когда разница в производительности составляет 5-10%, нету вижу особого смысла выбирать Dapper. Я отдаю предпочтение строго типизированному, покрытому тестами (in-memory) кодом, генерации оптимальных запросов на основе отслеживаемых данных. EF в данном плане явный фаворит.
Сразу прослеживается неопытность подхода: 1. Для оценки производительности необходимо использовать специализированные бенчмарки и учитывать алокации помимо времени выполнения2. Для точной оценки необходимо сравнивать производительность при использовании IBufferWriter, но старые сериализаторы его не поддерживают
Наибольший интерес вызывает следующий момент: Портер умеет работать со Span, Memory, MemoryMarshal? В системе net они занимают центральное положение при написании технических библиотек.
Спасибо за статью, очень познавательно и интересно читать.
До сих пор мучают следующие вопросы, не могли бы помочь разобраться:
1. Как должен выглядеть следующий код в функциональной парадигме: public class Car
{
public Car(string name, int power)
{
Name = name;
Power = power;
}
public string Name { get; }
public int Power { get; private set;}
void Add(Turbo turbo)
{
Power += torbo.Power;
}
}
public class Turbo
{
public Turbo(int power)
{
Power = power;
}
public int Power { get;}
}
Метод Add должен возвращать новый объект Car? Car Add(Turbo turbo)
{
return new Car(this.Name, this.Power + turbo.Power);
}
Если да, то есть вероятность, что программист возьмет старый объект класса, забыл про новый из результата выполнения метода: var car = new Car("name", 100);
var turbo = new Turbo(50);
car.Add(turbo);
return car;
Аналогичный пример с корзиной, в которую добавляют новые позиции. Корзина должна каждый раз пересоздаваться с новым списком?
Вопрос номер два:
Означает ли использование ФП частичный отказ от использования паттерна Состояние (State)?
Уже версия 0.9.0, но до сих пор первоначальная загрузка страницы выполняется крайне долго (Loading длится порядка 3 секунд при каждом заходе). На данный момент это является крайне критичным. Планируются ли работы в этом направлении по оптимизации скорости загрузки?
Да собственно никак. Когда в последний раз смотрел реализацию для публикации сообщений в Кафку, обнаружил создание отдельного продюсера под каждый топик, закрыл и больше не возвращался к этой либе.
Improve EF Core (non-tracking) query performance on TechEmpower Fortunes · Issue #23611 · dotnet/efcore (github.com)
На основе последних бенчмарков EF Core 6.0 c Dapper, когда разница в производительности составляет 5-10%, нету вижу особого смысла выбирать Dapper. Я отдаю предпочтение строго типизированному, покрытому тестами (in-memory) кодом, генерации оптимальных запросов на основе отслеживаемых данных. EF в данном плане явный фаворит.
До сих пор мучают следующие вопросы, не могли бы помочь разобраться:
1. Как должен выглядеть следующий код в функциональной парадигме:
public class Car
{
public Car(string name, int power)
{
Name = name;
Power = power;
}
public string Name { get; }
public int Power { get; private set;}
void Add(Turbo turbo)
{
Power += torbo.Power;
}
}
public class Turbo
{
public Turbo(int power)
{
Power = power;
}
public int Power { get;}
}
Метод Add должен возвращать новый объект Car?
Car Add(Turbo turbo)
{
return new Car(this.Name, this.Power + turbo.Power);
}
Если да, то есть вероятность, что программист возьмет старый объект класса, забыл про новый из результата выполнения метода:
var car = new Car("name", 100);
var turbo = new Turbo(50);
car.Add(turbo);
return car;
Аналогичный пример с корзиной, в которую добавляют новые позиции. Корзина должна каждый раз пересоздаваться с новым списком?
Вопрос номер два:
Означает ли использование ФП частичный отказ от использования паттерна Состояние (State)?