Резюме для программиста
Если вы такой умный, то как вы можете до сих пор вестись на этот троллинг? ))
Я с айти ушёл, потому-что там выпендриваются типа мурр, и друг другу хотят показать свои знания. Если не умеешь то начинают всякое клеймо ставить, типа на неспособность в программирование, только погрубее. Допустим этот программер - https://yvision.kz/u/Hes говорил мне, что я не умею программировать на net, а у самого там много дизлайков. Со своим LINQ он мне весь плешь проел см. https://yvision.kz/post/429471 и https://yvision.kz/post/435356. Только из-за него и учил этот LINQ, провёл исследования, LINQ немного медленно работает. исследование простые - в начале до LINQ и foreach ставите DateTime Now, в конце LINQ и foreach ставите опять DateTime Now, а потом сравниваете 2 даты до и после, у меня на простые LINQ уходит где-то примерно 4 сек., а если сделать сложные LINQ и очень много записей, особенно на сервере - то всё замёрзнет напрочь и будет программа или сервер еле еле шевелиться, в Германии распространён тонкий клиент-сервер (так немцы экономят денюжки), покупают один сервер, покупают для сервера Client Access License, покупают 10-100 тонких клиентов, потом настраивают, а пользователь включает тонкий клиент, который подключается к Windows Server через сеть или Wi-Fi, если там будут сидеть одновременно ну скажем 20 пользователей, и будут выполняться тяжёлые и сложные LINQ, весь сервер просто замёрзнет, из-за того что будет много съедаться памяти см.:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace LINQTest
{
public partial class Form1 : Form
{
private DateTime tm1;
public Form1()
{
// tm1 = DateTime.Now;
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
const int MAX_RECORDS = 6000;
String[] firstnames = new String[] { "Ольга", "Наталья", "Марина", "Александра", "Ирина", "Екатерина", "Сабина", "Элеонора", "Елезавета" };
String[] lastnames = new String[] {"Попова", "Шевченко", "Найденко", "Сидорова", "Еремеева", "Шабанова", "Иванова", "Ким", "Пушкина",
"Лысенко", "Квашенко", "Зайцева", "Краскова", "Даренко", "Абрамушина", "Березовская", "Касымова", "Чечмарёва",
"Надымова", "Кокина", "Кабаева", "Лебедева", "Соколова", "Кузнецова", "Новикова", "Морозова", "Дроздова", "Дудь",
"Порхоменко", "Надымова", "Викулова", "Здорова", "Краскова", "Гудкова", "Грудинина", "Конь", "Шишков", "Рыжкова",
"Жукова", "Дмитриев", "Порхоменко", "Мухина"};
String[] stations = new String[] { "Онкология", "Пульмунология", "Гастрэнторология", "Травматология", ""};
Person[] persons = new Person[MAX_RECORDS];
Hospital[] hospital = new Hospital[MAX_RECORDS];
Random rnd = new Random();
Random rnd2 = new Random();
Random rnd3 = new Random();
Random rnd4 = new Random();
Random rnd5 = new Random();
Random rnd6 = new Random();
for (int j = 0; j < MAX_RECORDS; j++)
{
persons[j] = new Person();
persons[j].personID = j;
persons[j].FirstName = firstnames[rnd.Next(0, firstnames.Length)];
persons[j].LastName = lastnames[rnd2.Next(0, lastnames.Length)];
persons[j].Birthday = new DateTime(rnd3.Next(1920, 1980), rnd3.Next(1, 12), rnd3.Next(1, 20));
}
for (int j2 = 0; j2 < MAX_RECORDS; j2++)
{
hospital[j2] = new Hospital();
hospital[j2].PersonID = rnd4.Next(0, MAX_RECORDS);
int day = rnd5.Next(1, 20);
int month = rnd5.Next(1, 8);
hospital[j2]._From = new DateTime(2018, month, day);
hospital[j2]._To= new DateTime(2018, month+rnd5.Next(1, 4), day+5);
hospital[j2].Station = stations[rnd6.Next(0, stations.Length)];
}
tm1 = DateTime.Now; // засекаем отсюда время
var results = from p in persons
from h in hospital
where p.personID == h.PersonID
select new { p.FirstName, p.LastName, p.Birthday, h.Station, h._From, h._To };
this.dataGridView1.DataSource = results.ToList();
this.txtCount.Text = MAX_RECORDS.ToString();
TimeSpan ts= DateTime.Now - tm1; // вычисляем время
this.txtTime.Text = ts.Seconds.ToString() + " сек.";
/*foreach (var r in results)
{
//this.listBox1.Items.Add(r.FirstName + " " + r.LastName + " " + r.Birthday + " "+ r._From + " " + r._To);
}*/
}
}
}
Вот результат 4 сек, всего 6 тыщ записей:
https://i.ibb.co/5YRjq4r/1-min.jpg
Этот код я делал в 2019 или 2020 году, сейчас посмотрел и вроде заметил ошибку, я тогда только начинал заниматься LINQ.
Моя ФЛ Он и Она