Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.11.2021
Сообщений: 53

Создание 1000000 записей

17.02.2023, 16:27. Показов 800. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, для тестового задания нужно случайно заполнить таблицу 1000000 записей, со случайным полом и фамилией, сделал цикл, но он работает очень медленно, есть ли способ сделать это быстрее? Заранее спасибо
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
            void Autofill()
            {
                string GetRandomChar()
                {
                    Random random = new Random();
                    char tmp = (char) random.Next('A', 'Z' + 1);
                    return tmp.ToString();
                }
 
                string GetRandomGender()
                {
                    string[] Genders = { "Male", "Female" };
                    Random random = new Random();
                    return Genders[random.Next(0, 2)];
                }
 
                for (int i = 0; i < 100; i++)
                {
                    Person go = new Person("Male", "F");
                    AddPerson(go);
                }
 
                for (int i = 100; i < 1000000; i++)
                {
                    Console.Write("\r{0}%   ", i);
                    AddPerson(new Person(GetRandomGender(), GetRandomChar()));
                }
                Console.WriteLine("All changes ready 100%");
            }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2023, 16:27
Ответы с готовыми решениями:

Создание алгоритма и блок-схемы к нему. Какое число членов натурального ряда в произведении дадут 1000000
Какое число членов натурального ряда в произведении дадут 1000000? Заранее спасибо за помощь!

Создание записей
Всём, здрасти! У меня такой головняк уже 2-ой день, шеф сказал написать базёнку, но всё хорошо, всё отлично, если бы не одно, но.......

Создание записей
Есть 2 связанные таблицы в бд и соответственно им связанных 2 dgv. При создании записи в первом внешний второго не меняется (= ID записи из...

7
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,101
17.02.2023, 16:45
Цитата Сообщение от Yan Kolosov Посмотреть сообщение
есть ли способ сделать это быстрее?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Autofill()
            {
               Random random = new Random();
               string[] Genders = { "Male", "Female" };
 
                for (int i = 0; i < 100; i++)
                {
                    Person go = new Person("Male", "F");
                    AddPerson(go);
                }
 
                for (int i = 100; i < 1000000; i++)
                {
                  //  Console.Write("\r{0}%   ", i); - это главный тормоз
 
                    AddPerson(new Person(Genders[random.Next(0, 2)], ((char) random.Next('A', 'Z' + 1))).ToString());
                }
                Console.WriteLine("All changes ready 100%");
            }
вопрос, что и как делает AddPerson
0
0 / 0 / 0
Регистрация: 15.11.2021
Сообщений: 53
17.02.2023, 16:51  [ТС]
nedel,
Console.Write("\r{0}% ", i);
был добавлен только для того, чтобы посмотреть работает ли оно вообще, т.к. за 6 минут я не получил сообщение о завершении на 100%)

AddPerson просто добавляет готовый объект Person в базу данных EF и сохраняет изменения, только сейчас когда писал подумал о том, что замедлять может то что каждый раз сохраняются изменения, я прав?
C#
1
2
3
4
5
void AddPerson(Person person)
            {
                db.Add(person);
                db.SaveChanges();
            }
Добавлено через 2 минуты
nedel, Большое спасибо, действительно не заметил, что каждый раз сохраняются данные, это как раз и тормозило весь процесс
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,428
17.02.2023, 17:53
Цитата Сообщение от Yan Kolosov Посмотреть сообщение
действительно не заметил, что каждый раз сохраняются данные, это как раз и тормозило весь процесс
Нет. Тормозит не сохранение на каждой итерации (хотя тоже сказывается, да). Тормозит то, что у вас один кеш контекста на весь цикл.

На каждой итерации вы, при вызове SaveChanges(), вынуждаете EF перебирать этот кеш в поисках записей для сохранения. И на каждой итерации этих записей становится на одну больше.

Вообще, с EF так не надо обращаться.
0
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,713
20.02.2023, 08:01
Цитата Сообщение от Usaga Посмотреть сообщение
Тормозит не сохранение на каждой итерации (хотя тоже сказывается, да). Тормозит то, что у вас один кеш контекста на весь цикл.
Все записи рандомные, увеличить кеш не поможет.
По-моему тормозит фреймворк, надо писать хранимую процедуру на SQL с генерацией данных.
Подозреваю, что будет на порядок быстрее.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,428
20.02.2023, 10:35
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Все записи рандомные, увеличить кеш не поможет.
Что вы плетёте?
0
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,713
20.02.2023, 17:43
Цитата Сообщение от Usaga Посмотреть сообщение
Что вы плетёте?
Объясни, каким образом увеличени кэша для миллиона РАЗНЫХ РАНДОМНЫХ записей приведёт к ускорению ввода.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,428
20.02.2023, 17:45
Ludwig Valentin, дружище, не гони гуся)

Ты сам сморозил дичь, сам на неё же и наезжаешь. Где я говорил о необходимости увеличить кеш, что должно привести к ускорению?

Я о другом: забивание этого кеша огромным количеством записей и есть причина тормозов при сохранении.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2023, 17:45
Помогаю со студенческими работами здесь

Создание записей
Мне нужно создать файл записей для сортировки, полями являются ФИО и номер телефона. Каким образом можно сгенерировать большое количество...

Вычисление последовательности 1-1/2+1/3-1/4+1/5-1/6 ….-1/n , где n<=1000000
1) Разработать программу posled1.c вычисления суммы последовательности 1-1/2+1/3-1/4+1/5-1/6 …..-1/n , где n&lt;=1000000 вычислением...

Ввод числа прописью до 1000000
Нашел тут программу с прописью чисел до 3000, как её дополнить до 1000000? uses Crt; type nazw = array of String; const ed :...

Создание нескольких записей в БД
Всем привет! Помогите пожалуйста! Нужно чтобы в базу несколько ра производилась запись одних и тех е значений. Есть такой скрипт:...

создание архива записей
всё работает кроме 31 числа, просто не отображается. // Создаём массив из месяцев года $monthes = array('01' =&gt; 'Январь', ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru