• Как увеличить производительность программы на .net 4.5 использующей 50000 запросов к базе данных?

    @polifill
    Очевидно.
    Вы же сами уже дали себе ответ на вопрос.
    Все это сделать в ОДНОМ запросе.
    Это ускорит радикально.

    А чтение - кэшировать по максимуму в оперативке.
    Если пользователь один - это оперативка в приложении.

    Если пользователей множество - то поставить отдельный сервер для кэширования.
    Например, Tarantool. Искать сначала в нем.
    Если нет в кэше Tarantool'а данных - тогда качать с SQL, затем заливать копию на Tarantool для последующего кэшированного чтения.
    При изменениях - дублировать на Tarantool.
    Ответ написан
    Комментировать
  • Как увеличить производительность программы на .net 4.5 использующей 50000 запросов к базе данных?

    Godless
    @Godless
    Думаю что:
    • без асинхронных запросов не обойтись. Хотя бы в отдельный поток(и). (хотя если будут срезы, то не обязательно)
    • Не будет лишним оптимизация БД. Статистику обновлять триггерами/хранимками если не часто обновляется (от получаса), если чаще, то хранить срез и пересчитывать периодически.
    • Не забывайте про индексы, иногда денормализация спасает, но база подраспухнет.
    • Оптимизируйте запросы, стройте планы выполнения, смотрите узкие места.


    Принцип ускорения ПО всегда один, нужно или считать заранее, или где-то хранить часть расчетов - это память, будь то оператива или диск...
    ЗЫ: послушайте еще polifill, дело пишет.
    Ответ написан
    Комментировать
  • Как передать переменную на другую страницу WPF?

    newross
    @newross
    .Net разработчик, стартапер
    Очень плохой вариант - через конструктор.
    private void pre1_Click(object sender, RoutedEventArgs e)
            {
                this.Content = new Page2("переменная");
            }

    Плохой вариант - через свойство.
    private void pre1_Click(object sender, RoutedEventArgs e)
            {
                var page = new Page2();
                page.Variable = "переменная";
                this.Content = page;
            }

    Человеческий вариант - через сервис, который подтягивается при помощи ioc-контейнера.
    private void pre1_Click(object sender, RoutedEventArgs e)
            {
                _service.Variable = "переменная";
                this.Content = new Page2();
            }

    Затем в Page2, например так
    var service = _container.Resolve<IMyService>;
            Title = service.Variable;
    Ответ написан