Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DataGridView, тормозит отображение на другом компе, Помогите мне очень леново! Я в шоке! 
:(
    Опции темы
Hobotanius
Дата 8.12.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.7.2008

Репутация: нет
Всего: нет



Суть вот в чём - я написал приложение с использованием трёх DataGridView и трёх закладок Tab-контрола. В DataGridView загружаю данные из БД. И на моём ноутбуке под вистой и на стационарном компе под XP Pro sp3 (лицензионка) Всё работает отлично с нормальной скоростью. Вчера поставил прогу заказчице на ноутбук Lenovo IdeaPad Y510. На ноутбуке был свежеустановленный зверь-сервиспак три, я доустановил SQLExpress 2005, развернул БД. Запускаю свою прогу - и о ужос! DataGridView как скатерть самобранка, как скрученый половичёк - раскатывает строки сверху вниз! Заказчица - счастлива, а я в шоке! Мне очень леново от таких скоростей работы грида! Сегодня впервые за последний месяц я думал всю ночь в сталкера над этой проблемой. На утро пришла одна мысль - поставить директикс, я поставил, но всё бестолку - скорость осталась прежней. 
Кто-нибудь подскажите, что мне делать чтоб успокоить мою душу быстрой работой грида?! Я знаю, что на этом ноуте муж заказчицы играл в фоллаут третий! А тут грид несчастных тридцать строчек выводит с таким тормозом! Неужели я зря изучал C#?
Жду ваших советов!
PM MAIL   Вверх
Экскалупатор
Дата 9.12.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



Hobotanius, наверное, надо посмотреть что именно ты там сделал.
PM MAIL ICQ   Вверх
Hobotanius
Дата 9.12.2009, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.7.2008

Репутация: нет
Всего: нет



Хм. Это запрсто. Правда очень сомниваюсь, что это чем-то поможет. Т.к, на моём компе и на втором моём компе всё работает очень хорошо. Поэтому мне думается что дело не в коде и не в скорости работы с БД. Потому как еслиб в скорости обмена с бд, то должно было бы по идее быть сначало долгое ожидание, а затем быстрый выброс строк в грид. А тут именно - "раскручивание половичка"...

Код


// Инициализация/обновление грида контент ***
        private void InitGridContent()
        {
            // Сохраним позицию курсора если таковая имела место быть
            if ((this.gridContent.CurrentCellAddress.Y) != -1)
            {
                if (gridContent.RowCount > 0)
                {
                    CursorIndexContent = gridContent.CurrentRow.Index;
                }
            }

            string source = Properties.Settings.Default.ConnectDatabaseString;

            string select_operation = "select * from [dbo].[view_Goods]";

            if (this.radioActivatedContent.Checked == true)
            {
                select_operation = "select * " +
                                   "from [dbo].[view_Goods] " +
                                   "where [dbo].[view_Goods].SoldDate is null " +
                                   "or [dbo].[view_Goods].PayDate is null";
            }

            if (this.radioOnConditionContent.Checked == true)
            {
                this.txtComitent_Content.Text = this.txtComitent_Content.Text.Trim();
                this.txtContractNumber_Content.Text = this.txtContractNumber_Content.Text.Trim();
                this.txtIdGoods_Content.Text = this.txtIdGoods_Content.Text.Trim();
                this.txtAtCostFrom_Content.Text = this.txtAtCostFrom_Content.Text.Trim();
                this.txtAtCostTo_Content.Text = this.txtAtCostTo_Content.Text.Trim();

                String Comitent = this.txtComitent_Content.Text;
                String ContractNumber = this.txtContractNumber_Content.Text;
                String IdGoods = this.txtIdGoods_Content.Text;
                String AtCostFrom = this.txtAtCostFrom_Content.Text;
                String AtCostTo = this.txtAtCostTo_Content.Text;

                Comitent = Comitent + "%";
                if (ContractNumber.Length == 0)
                {
                    ContractNumber = "%";
                }
                if (IdGoods.Length == 0)
                {
                    IdGoods = "%";
                }
                if (AtCostFrom.Length == 0)
                {
                    AtCostFrom = "0";
                }
                if (AtCostTo.Length == 0)
                {
                    AtCostTo = "100000000";
                }

                select_operation = "select * from [dbo].[view_Goods] "+
                    "where [dbo].[view_Goods].[ComitentName] like '" + Comitent + "' " +
                    "and [dbo].[view_Goods].[ContractNumber] like '" + ContractNumber + "' " +
                    "and [dbo].[view_Goods].[id] like '" + IdGoods + "' " +
                    "and [dbo].[view_Goods].[PriceForSale] >= " + AtCostFrom + " " +
                    "and [dbo].[view_Goods].[PriceForSale] <= " + AtCostTo;

                if (checkBOnStatus_Content.Checked == true && comboBoxOnStatus_Content.SelectedIndex > -1)
                {
                    String Status = this.comboBoxOnStatus_Content.SelectedItem.ToString();
                    if (Status == "Продано")
                    {
                        select_operation = select_operation + " and [dbo].[view_Goods].[SoldDate] is not null";
                    }

                    if (Status == "Выплачено")
                    {
                        select_operation = select_operation + " and [dbo].[view_Goods].[PayDate] is not null";
                    }

                    if (Status == "Не продано")
                    {
                        select_operation = select_operation + " and [dbo].[view_Goods].[SoldDate] is null";
                    }

                    if (Status == "Не выплачено")
                    {
                        select_operation = select_operation + " and [dbo].[view_Goods].[PayDate] is null";
                    }

                    if (Status == "Долг")
                    {
                        select_operation = select_operation + " and [dbo].[view_Goods].[SoldDate] is not null and [dbo].[view_Goods].[PayDate] is null";
                    }
                }

                if (checkBOnTime_Content.Checked == true && comboBoxOnTime_Content.SelectedIndex > -1 
                   && (checkBDataFrom_Content.Checked == true || checkBDataTill_Content.Checked == true))
                {
                    //MessageBox.Show("","");
                    String OnDate = this.comboBoxOnTime_Content.SelectedItem.ToString();

                    if(OnDate == "Приёма")
                    {
                        OnDate = "Data";
                    }

                    if(OnDate == "Продажи")
                    {
                        OnDate = "SoldDate";
                    }

                    if (OnDate == "Выплаты")
                    {
                        OnDate = "PayDate";
                    }

                    String DataFrom = this.dataTPFrom_Content.Value.Day.ToString() + "." +
                                      this.dataTPFrom_Content.Value.Month.ToString() + "." +
                                      this.dataTPFrom_Content.Value.Year.ToString();

                    String DataTill = this.dataTPTill_Content.Value.Day.ToString() + "." +
                                      this.dataTPTill_Content.Value.Month.ToString() + "." +
                                      this.dataTPTill_Content.Value.Year.ToString();

                    if (this.checkBDataFrom_Content.Checked == true & this.checkBDataTill_Content.Checked == true)
                    {
                        select_operation = select_operation + " and [dbo].[view_Goods].["+ OnDate + "] between '" +
                        DataFrom + "' and '" + DataTill + "'";
                    }

                    if (this.checkBDataFrom_Content.Checked == true & this.checkBDataTill_Content.Checked == false)
                    {
                        select_operation = select_operation + " and [dbo].[view_Goods].["+ OnDate +"] >= '" +
                        DataFrom + "'";
                    }

                    if (this.checkBDataFrom_Content.Checked == false & this.checkBDataTill_Content.Checked == true)
                    {
                        select_operation = select_operation + " and [dbo].[view_Goods].[" + OnDate + "] <= '" +
                        DataTill + "'";
                    }
                }
            }

            using (SqlConnection conn = new SqlConnection(source))
            {
                conn.Open();

                DataSet ds = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter(select_operation, conn);
                da.Fill(ds, "view_Goods");
                gridContent.AutoGenerateColumns = true;
                gridContent.DataSource = ds;
                gridContent.DataMember = "view_Goods";

                conn.Close();
            }

        }



Вот так инициализируется\обновляется самый нагруженный грид.
Какие есть идеи? От чего может быть РАЗНИЦА в скорости вывода строк в гриде на разных компах?
PM MAIL   Вверх
Экскалупатор
Дата 9.12.2009, 03:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



Цитата

if (this.radioActivatedContent.Checked == true)


улыбнуло, зачем это? в смысле зачем сравнивать true с true?
вообще код очень жесткий. индусы обзавидуются. но на мой взгляд ничего криминального, должно работать. может все таки это система виновата? по моим наблюдения сборки (свежеустановленный зверь-сервиспак три) это какой то ###... ни одной нормальной не встречал, постоянно насуют туда какого то г, а народ пользуется.

ммм. а по какому событию ты все это запускаешь?
PM MAIL ICQ   Вверх
Hobotanius
Дата 9.12.2009, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.7.2008

Репутация: нет
Всего: нет



Цитата

улыбнуло, зачем это? в смысле зачем сравнивать true с true?


Когда на c++ пишу, то такого не делаю, а по шарпу книжку такую читал где такой код называли чуть ли не обязательным и наглядным вот как-то и пошло с того момента - уже почти привычка...

Цитата

вообще код очень жесткий. индусы обзавидуются.


Чё значит - жёсткий? В чём именно минус? Почему индусы)))?

Цитата

но на мой взгляд ничего криминального, должно работать.


Дык!!! Ведь всё работает только на моём компе - ноутбуке, стационарном. И я уверен, что на рабочем компе тоже будет работать, потому как подобная, мной написаная прога, работает с нормальной скоростью на моей работе где также стоит зверь сп3! И та прога на работе в ней ваще дофига гридов - порядка 15 - 20 штук.

Цитата

ммм. а по какому событию ты все это запускаешь?


Запускаю это в конструкторе. Вот так:

Код

            // Выводить активные товары
            this.radioActivatedContent.Select();

            bool initContent = true;
            try
            { InitGridContent(); }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Опрерация вызвала исключение.");
                initContent = false;
            }

            if (initContent == true)
            {
                initOneContent = true;
                gridContent.Columns[0].HeaderCell.Value = "Код";
                gridContent.Columns[1].HeaderCell.Value = "Наименование";
                gridContent.Columns[2].HeaderCell.Value = "Цена";
                gridContent.Columns[3].HeaderCell.Value = "Процент";
                gridContent.Columns[4].HeaderCell.Value = "На руки";
                gridContent.Columns[5].HeaderCell.Value = "Прибыль";
                gridContent.Columns[6].HeaderCell.Value = "Принято";
                gridContent.Columns[7].HeaderCell.Value = "Продано";
                gridContent.Columns[8].HeaderCell.Value = "Выплачено";
                gridContent.Columns[9].HeaderCell.Value = "Договор";
                gridContent.Columns[10].HeaderCell.Value = "Комитент";

                gridContent.Columns[0].Width = Properties.Settings.Default.ContentGrid0;
                gridContent.Columns[1].Width = Properties.Settings.Default.ContentGrid1;
                gridContent.Columns[2].Width = Properties.Settings.Default.ContentGrid2;
                gridContent.Columns[3].Width = Properties.Settings.Default.ContentGrid3;
                gridContent.Columns[4].Width = Properties.Settings.Default.ContentGrid4;
                gridContent.Columns[5].Width = Properties.Settings.Default.ContentGrid5;
                gridContent.Columns[6].Width = Properties.Settings.Default.ContentGrid6;
                gridContent.Columns[7].Width = Properties.Settings.Default.ContentGrid7;
                gridContent.Columns[8].Width = Properties.Settings.Default.ContentGrid8;
                gridContent.Columns[9].Width = Properties.Settings.Default.ContentGrid9;
                gridContent.Columns[10].Width = Properties.Settings.Default.ContentGrid10;

                gridContent.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
                gridContent.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
                gridContent.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
                gridContent.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
                gridContent.Columns[5].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
                gridContent.Columns[6].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter;
                gridContent.Columns[7].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter;
                gridContent.Columns[8].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter;
                gridContent.Columns[9].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight;
                gridContent.Columns[10].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft;

                gridContent.Columns[2].DefaultCellStyle.Format = "C";
                gridContent.Columns[4].DefaultCellStyle.Format = "C";
                gridContent.Columns[5].DefaultCellStyle.Format = "C";
                gridContent.Columns[7].DefaultCellStyle.NullValue = "не продано";
                gridContent.Columns[8].DefaultCellStyle.NullValue = "не выплачено";

                gridContent.Columns[1].Frozen = true;
            }


Вызываю при получении главным окном фокуса. Вот так:

Код

// Обновить гриды если базовое окно получает фокус и если гриды уже проходили первую инициализацию
        private void Base_Activated(object sender, EventArgs e)
        {

            ... - такой же код для двух других вкладок.

            if (this.tabControl1.SelectedTab.Text.ToString() == "Товары" &&
                initOneContent == true)
            { 
                InitGridContent();
                SetCursorInGrid(gridContent, CursorIndexContent);
                return;
            }
        }


Вызываю при смене активной вкладки. Вот так:

Код

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            ...- такой же код для двух других вкладок.

            if (this.tabControl1.SelectedTab.Text.ToString() == "Товары" &&
                initOneContent == true)
            {
                InitGridContent();
                SetCursorInGrid(gridContent, CursorIndexContent);
                return;
            }
        }


При добавлении нового товара. Вот так:

Код

// Добавить новый товар
        private void buttonAddNewContent_Click(object sender, EventArgs e)
        {
            DialogResult res = 0;
            for (int i = 0; i < GoodsMaxQuantity; i++)
            {
                AddNewContent NewContent = new AddNewContent("");
                res = NewContent.ShowDialog();

                if (res == DialogResult.OK)
                {
                    InitGridContent();
                }
                else
                {
                    break;
                }
            }
        }


И соответственно при удалении товара.
Вызываю при смене отображения. Вот так:

Код

//Выбор варианта отображения
        private void radioOnConditionContent_CheckedChanged(object sender, EventArgs e)
        {
            this.txtComitent_Content.Enabled = true;
            this.txtContractNumber_Content.Enabled = true;
            this.txtIdGoods_Content.Enabled = true;
            this.txtAtCostFrom_Content.Enabled = true;
            this.txtAtCostTo_Content.Enabled = true;

            this.labelComitent_Content.Enabled = true;
            this.labelContract_Content.Enabled = true;
            this.labelIdGoods_Content.Enabled = true;
            this.labelAtCostFrom_Content.Enabled = true;
            this.labelAtCostTo_Content.Enabled = true;

            this.checkBOnTime_Content.Enabled = true;
            this.checkBOnStatus_Content.Enabled = true;

            if(this.checkBOnTime_Content.Checked == true)
            {
                this.comboBoxOnTime_Content.Enabled = true;

                this.checkBDataFrom_Content.Enabled = true;
                this.checkBDataTill_Content.Enabled = true;

                if (this.checkBDataFrom_Content.Checked == true)
                {
                    this.labelFrom_Content.Enabled = true;
                    this.dataTPFrom_Content.Enabled = true;
                }

                if (this.checkBDataTill_Content.Checked == true)
                {
                    this.labelTill_Content.Enabled = true;
                    this.dataTPTill_Content.Enabled = true;
                }
            }
            else if (this.checkBOnStatus_Content.Checked == true)
            {
                this.comboBoxOnStatus_Content.Enabled = true;
            }

            InitGridContent();
            SetCursorInGrid(gridContent, CursorIndexContent);
        }


Вобщем вызываю каждый раз когда предполагается, что набор строк мог устареть. Пробовал при 100000 записей - на моём компе скорость приемлима - те не более секунды а то и менее.

Заказчица обещала дать ноут на ночь - помучить. Так что первое что сделаю это поставлю родную ему висту и посмотрю работу под ней.
PM MAIL   Вверх
mrbrooks
Дата 9.12.2009, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Цитата(Hobotanius @  9.12.2009,  06:38 Найти цитируемый пост)
Когда на c++ пишу, то такого не делаю, а по шарпу книжку такую читал где такой код называли чуть ли не обязательным и наглядным вот как-то и пошло с того момента - уже почти привычка...

Тебя обманули.

Цитата(Hobotanius @  9.12.2009,  06:38 Найти цитируемый пост)
Чё значит - жёсткий? В чём именно минус? Почему индусы)))?

Ибо даже так они не пишут  smile 

Hobotanius, короче Склифасовский - фиг с ним кодом. Хотя за такое в 15 веке сжигали на кострах - ибо ересь  smile 
Подозреваю, что небось в Грид ты запихиваешь всю информацию каким нибудь select * from blabla.
 
Цитата(Hobotanius @  9.12.2009,  06:38 Найти цитируемый пост)
Пробовал при 100000 записей

Ооо! Интересно как -  выходит пользователь с удовольствием просмотрит данный результат? А потом когда посмотрит, однозначно будет тебя искать. Возможно с битой  smile 

Проблема одна. А именно в реализации. Не надо возращать сразу 100000 записей - это никому не надо. Выходов здесь два:
1) Менее кошерный. DataGridView.VirtualMode со всеми вытекающими (см. хелп).
2) Более кошерный. Использовать т.н. Paging (причем фильтрование вести не локально храня все в памяти, а sql-запросами - подробнее в гугл. Решения были)

Гуд лак!
PM MAIL   Вверх
gradvinn
Дата 9.12.2009, 09:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 16.9.2009

Репутация: нет
Всего: нет



Я бы чем гадать поставил бы временные метки, в тем более если целевой компьютер под рукой. А индуский код здесь не причём, код нормальный.  smile 
PM MAIL   Вверх
Hobotanius
Дата 9.12.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.7.2008

Репутация: нет
Всего: нет



Цитата(mrbrooks)

Ибо даже так они не пишут  smile


Не люблю пустых слов. Скажи конкретно - в чём минус?

Цитата(mrbrooks)

Hobotanius, короче Склифасовский - фиг с ним кодом. Хотя за такое в 15 веке сжигали на кострах - ибо ересь  smile 
Подозреваю, что небось в Грид ты запихиваешь всю информацию каким нибудь select * from blabla.


Да чё тут подозревать? Смотри мой пост от 9.12.2009, 01:53 там всё написано чё и как я туда пихаю.

Цитата(mrbrooks)

Ооо! Интересно как -  выходит пользователь с удовольствием просмотрит данный результат? А потом когда посмотрит, однозначно будет тебя искать. Возможно с битой  smile


А можно по существу вопроса?

Цитата(mrbrooks)

Проблема одна. А именно в реализации. Не надо возращать сразу 100000 записей - это никому не надо.


Как ни странно, но проблема как раз не в этом - ибо на моём ноутбуке всё летает.

Цитата(mrbrooks)

Выходов здесь два:
1) Менее кошерный. DataGridView.VirtualMode со всеми вытекающими (см. хелп).
2) Более кошерный. Использовать т.н. Paging (причем фильтрование вести не локально храня все в памяти, а sql-запросами - подробнее в гугл. Решения были)


Ну ты меня с первым вариантом уморил ваще! smile Тебе самому не кажется абсурдным на машине, на которой и так крутится SQL-сервер ещё создавать в памяти копию базы данных?
А про Paging поищу конечно хотя явно не сейчас. Я вообще не понимаю чё к коду, то приставать если на МОЕЙ машине всё ЛЕТАЕТ?

Кстате, нашёл тут подобную тему - http://www.sql.ru/forum/actualthread.aspx?...652032&pg=1
щас читаю, поэтому ещё не знаю чем дело кончится, на чём серце успокоится... Неужели время потраченное на изучение шарпа - потрачено в пустую?

Добавлено через 4 минуты и 58 секунд
Цитата(gradvinn)

Я бы чем гадать поставил бы временные метки, в тем более если целевой компьютер под рукой. А индуский код здесь не причём, код нормальный.  smile


Может есть толковая ссылочка где показано как это делается?
PM MAIL   Вверх
WarHog
Дата 9.12.2009, 11:46 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: нет
Всего: 2



Цитата(Hobotanius @ 9.12.2009,  10:37)
Цитата(mrbrooks)

Выходов здесь два:
1) Менее кошерный. DataGridView.VirtualMode со всеми вытекающими (см. хелп)...


Ну ты меня с первым вариантом уморил ваще! smile Тебе самому не кажется абсурдным на машине, на которой и так крутится SQL-сервер ещё создавать в памяти копию базы данных?

Hobotanius, ты с чего решил, что для работы в Virtual mode нужно создавать в памяти копию базы????
"DataGridView поддерживает специальный виртуальный режим (Virtual mode) отображения данных. Основная идея такого режима заключена в том, что внутри control-а не хранится никаких данных. Вместо этого DataGridView генерирует события, в обработчиках которых программист может «подсунуть» ему данные, или наоборот, получить данные, введенные пользователем." ©
--------------------
PM MAIL   Вверх
mrbrooks
Дата 9.12.2009, 12:03 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Цитата(Hobotanius @  9.12.2009,  10:37 Найти цитируемый пост)
Не люблю пустых слов. Скажи конкретно - в чём минус?

Минус в том что не пишут. Или ты мне предлагаешь перелопатить все то что написал? Ты мне за это заплатишь? Твой код трудно читаем. А так можешь любить, что считаешь нужным. Другим знать это не обязательно.

Цитата(Hobotanius @  9.12.2009,  10:37 Найти цитируемый пост)
А можно по существу вопроса?

Существу чего?

Цитата(Hobotanius @  9.12.2009,  10:37 Найти цитируемый пост)
Как ни странно, но проблема как раз не в этом - ибо на моём ноутбуке всё летает.

В чем проблема? Поставляй свою БД с точно такими же ноутбуками. И вопрос отпадет сам собой.

Цитата(Hobotanius @  9.12.2009,  10:37 Найти цитируемый пост)
Тебе самому не кажется абсурдным на машине, на которой и так крутится SQL-сервер ещё создавать в памяти копию базы данных?

Нет не кажется. Если тебя это забавляет - респект заказчику.

Цитата(Hobotanius @  9.12.2009,  10:37 Найти цитируемый пост)
Кстате, нашёл тут подобную тему

Почитай почитай. На этом же форуме один камрад, как раз стебался над подобной проблемой - мол люди после вопят - "Зачем же я пишу на шарпе! Надо срочно вернуться на плюсы.!".

Цитата(WarHog @  9.12.2009,  11:46 Найти цитируемый пост)
Hobotanius, ты с чего решил, что для работы в Virtual mode нужно создавать в памяти копию базы????

А с чего ты решил что он вообще разбирался в данном вопросе?  smile В данном случае занимаются формошлепством, но ни как не программированием  smile 
PM MAIL   Вверх
Экскалупатор
Дата 9.12.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



мне кажется тут все упрется в железо ноутбука. я писал похожую прогу, где дата грид(правда один) обнавлялся так же, по фокусу, при добавлении и пр. на компе котором писал ему памяти хватало, а когда челу отдал у него все как в слайд шоу, но у него при этом комп древний (целерон 1,5 и 256 ОЗУ) и при таком раскладе я посчитал это нормальным. особенно если учесть все моменты твоего кода(если даже оставить абсолютную нечитаемость) например работы со строками, плюс количество запуска этого (да наверняка и других подобных) методов, среда может просто не успевать за твоей прогой.

Добавлено через 7 минут и 27 секунд
опять же я думаю что такая вещь как "зверь" это вообще смерть для компа, и ставить ее могут только криворукая школота, которая хочет все и сразу, не задумываясь а для чего это все нужно и как это все будет работать вместе. я реально не видел что бы с подобными вещами кто то мог нормально работать. у меня сосед нахваливает, и переустанавливает ее каждую неделю, потому что начинает по его словам "тупить".
PM MAIL ICQ   Вверх
Hobotanius
Дата 9.12.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.7.2008

Репутация: нет
Всего: нет



Цитата(mrbrooks)

Минус в том что не пишут.


Очень полноценное предложение. Я наверное должен быть телепатом чтоб тебя понять.

Цитата(mrbrooks)

Или ты мне предлагаешь перелопатить все то что написал?


Я тебе ни чё не предлагаю.

Цитата(mrbrooks)

Существу чего?


Ты читать внимательно умеешь?

Цитата(mrbrooks)

А с чего ты решил что он вообще разбирался в данном вопросе?  smile В данном случае занимаются формошлепством, но ни как не программированием  smile


Судя по количеству тобой написаных постов - ты круто во всём разбираешься... Только люди хорошо разбирающиеся не пишут в таком тоне. Ты пренериятный собеседник и поэтому мне не нужны твои советы. Видя темы моего авторства - проходи мимо не задерживайся...
PM MAIL   Вверх
Экскалупатор
Дата 9.12.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



Hobotanius, ну так как? конфигурацию целевой машины можешь озвучить?
PM MAIL ICQ   Вверх
mrbrooks
Дата 9.12.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



 smile 
Цитата(Hobotanius @  9.12.2009,  13:15 Найти цитируемый пост)
Судя по количеству тобой написаных постов - ты круто во всём разбираешься...

мне до тебя далеко.

Цитата(Hobotanius @  9.12.2009,  13:15 Найти цитируемый пост)
Ты пренериятный собеседник и поэтому мне не нужны твои советы. Видя темы моего авторства - проходи мимо не задерживайся... 

прорвало?  smile  уломал черт языкастый - не буду тебе отвечать.
PM MAIL   Вверх
Ram1reS
Дата 9.12.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 25.4.2008
Где: Москва

Репутация: 3
Всего: 5



Почитайте про класс StopWatch, и замерьте время выполнения разных участков кода на буке заказчика, будет яснее где конкретно проблема.
--------------------
 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.