Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676

Быстрая альтернатива Dictionary

21.11.2020, 06:57. Показов 6339. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ранее уже был разговор о том, что Dictionary не самый быстрый вариант работы со списками, отсюда вопрос - есть ли альтернативное решение с близким функционалом или всё сводится к массивам/спискам и собственной реализации необходимого?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2020, 06:57
Ответы с готовыми решениями:

Нужна альтернатива Dictionary (или как не засорять озу)
Доброго времени суток, уважаемые форумчане Я столкнулся с такой проблемой, что сильно засоряется память. И так с самого начала, почему я...

Двигать фигуру мышью, есть ли более быстрая альтернатива методу pictureBox.Refresh?
На форме есть pictureBox, в который вставлен рисунок (Image) из файла. С использованием метода MouseMove поверх рисунка с помощью курсора...

Проинициализировать значениями dictionary вложенный в dictionary
Народ, помогите, как проинициализировать значениями такую конструкцию: Dictionary <int,Dictionary<string, int>>

57
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
21.11.2020, 15:17  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
SSD не панацея.
HDD медленнее оперативки в тысячу раз, SSD в сто.
Основные тормоза всё равно будут в чтении файла.
у меня пока читается весь файл целиком, между стартом программы, запуском дебаггера и началом работы коды как раз проходит 4-5 секунд, 1 Гб файла всё строго в рамках скорости SSD.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Допустим, у вас есть список ключевых слов и вы их ищете в файле.
Нет

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Или может вы разбираете файл по разделителям на слова, получаете список слов разный для каждого файла и заранее неизвестный.
В этом случае надо совмещать разбор файла на слова и подсчёт по ним.
Оно самое

Цитата Сообщение от Элд Хасп Посмотреть сообщение
В обоих вариантах надо исключить многократное чтение файла.
В моем случае этого пока не происходит, но я хотел бы сделать именно буферный ввод, так как обработка целиком слишком затратна по ОЗУ, у меня дома и на работе 8 Гб оперативки, а доходит до 12 Гб, я правда уже делаю для всех Dictionary, если возможно, Clear(), так что сократил до 2 Гб.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Это проще.
Если слов очень много, то можно заменить 8 байт не на 8 char (string), а на один long.
Хеш long'a тоже считается очень быстро.
слова разной длины, от 1 до 8, придется как-то это учитывать.

Цитата Сообщение от КОП Посмотреть сообщение
но отказываетесь учиться пользоваться молотком
гвоздь можно забить кувалдой, результат бывает сложно различить. И не всегда мозгов хватает чтобы что-то понять, усердие тут не работает.

Цитата Сообщение от КОП Посмотреть сообщение
Ssd это всё еще очень медленно относительно RAM и кэша. Причем тут дебаггер вообще непонятно
файлу в 1 гигабайт нужно 4 секунды для чтения, на старте программы, на общем фоне работы программы в 3 часа - это как-то слишком несерьезная проблема.
ну а дебаггер тут ровно при том, что при старте программы VS меняется визуально, показывает статистику и т.п. и вот пока появится вся эта информация файл успевает прочитаться, так что дискомфорта это не вызывает.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
А каким боком сюда можно всунуть StringBuilder ?
ввод находится в string, со string происходят работы, результат складывается в Dictionary.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
А как вы его читаете если получаете string?
Покажите код читающий файл и ищущий в нём слова.
C#
1
2
3
4
5
6
7
8
string source = File.ReadAllText(@"d:\work\words\a.txt", Encoding.GetEncoding(1251));
Dictionary<string, int> Freq = new Dictionary<string, int>();
for (int i = 0; i < source.Length; i++)
{
    if (!Freq.ContainsKey(source.Substring(i, 1)))
        Freq.Add(source.Substring(i, 1), 0);
    Freq[source.Substring(i, 1)]++;
}
Упрощенный вариант.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
21.11.2020, 15:46
Зачем 2 раза делать
C#
1
source.Substring(i, 1)
если можно сделать 1 раз? И вообще SubString очень медленная операция...
1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
21.11.2020, 15:57
Цитата Сообщение от belalugoci Посмотреть сообщение
гвоздь можно забить кувалдой, результат бывает сложно различить.
тогда глупо жаловаться что в узком месте кувалда не пролезает
Цитата Сообщение от belalugoci Посмотреть сообщение
И не всегда мозгов хватает чтобы что-то понять, усердие тут не работает.
тогда зачем вы решаете надуманную проблему со словарями?
опишите задачу например "посчитать частоту слов в файлах. 10 гигов такого-то текста. ..."
потом запостите код вашего решения, а не "Упрощенный вариант."
Цитата Сообщение от belalugoci Посмотреть сообщение
на общем фоне работы программы в 3 часа
3 часа считать слова в файле на 4 гига? либо вы параллельно биткойны майните, либо ооочень неэффективно ищете (в плане вашего алгоритма, а не производительности Dictionary)
Цитата Сообщение от belalugoci Посмотреть сообщение
ну а дебаггер тут ровно при том, что при старте программы VS меняется визуально, показывает статистику и т.п.
ну так дебаггер не программа, не запускайте его, если он так мешает.
вы же хотите чтобы ваша программа быстрее работала, а не студия с ее дебаггером, правильно?
1
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
21.11.2020, 16:09
а еще вместо ContainsKey/Add можно использовать индексатор - уже в два раза меньше операций поиска по словарю.
Freq[str]++

Добавлено через 5 минут
Если текст всегда в однобитной кодировке то нет смысла читать файл как текст - это медленнее и потребляет 2х памяти тк символы в строке хранятся в unicode

Добавлено через 1 минуту
Упрощенный вариант - не вариант. Каждый нюанс имеет значение
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
21.11.2020, 16:23
Цитата Сообщение от nicolas2008 Посмотреть сообщение
Упрощенный вариант - не вариант. Каждый нюанс имеет значение
Да там даже в этом упрощенном варианте 3 идентичных операции выполняется вместо одной... Представляю что там в полном варианте за чудеса происходят...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
21.11.2020, 17:11
Цитата Сообщение от belalugoci Посмотреть сообщение
Упрощенный вариант.
Это же посимвольный подсчёт.
Он делается совершенно по иному намного более оптимально.
Словарь как минимум нужно изменить на Dictionary<char, int>.

Меня интересует как вы выделяете слова из текста, по какому принципу.

Добавлено через 1 минуту
КАЖДЫЙ символ преобразуете в строку, которую потом отправляете в мусор....
Ужас...!

Покажите код для слов.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
21.11.2020, 17:18
Цитата Сообщение от belalugoci Посмотреть сообщение
Упрощенный вариант.
В чем заключается упрощенность? Судя, по скорости 3 часа на 1 гиг, я даже представить не могу, что там такое. Регекспами слова что-ли ищете? Да и то не уверен, что будет так тормозить

Добавлено через 2 минуты
belalugoci, если хотите конструктивной помощи, покажите ВЕСЬ код. Без всяких упрощений.
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,762
Записей в блоге: 2
21.11.2020, 19:27
Почитайте про префиксное дерево. В нем можно добиться поиска О(1). Но платить будете памятью
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
21.11.2020, 19:53  [ТС]
мне жаль, но весь код показать не могу.

Цитата Сообщение от Someone007 Посмотреть сообщение
Зачем 2 раза делать
ну косяк, буду исправлять.

Цитата Сообщение от КОП Посмотреть сообщение
опишите задачу например "посчитать частоту слов в файлах. 10 гигов такого-то текста. ..."
потом запостите код вашего решения, а не "Упрощенный вариант."
это так не работает

Цитата Сообщение от КОП Посмотреть сообщение
3 часа считать слова в файле на 4 гига? либо вы параллельно биткойны майните, либо ооочень неэффективно ищете (в плане вашего алгоритма, а не производительности Dictionary)
алгоритмы описаны в сети, решения тоже, беру решения и использую, откуда ж мне знать их эффективность. вот сейчас может чего-то и придумается.

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

Цитата Сообщение от nicolas2008 Посмотреть сообщение
а еще вместо ContainsKey/Add можно использовать индексатор - уже в два раза меньше операций поиска по словарю.
Freq[str]++
не понял идею.

Цитата Сообщение от nicolas2008 Посмотреть сообщение
Если текст всегда в однобитной кодировке то нет смысла читать файл как текст - это медленнее и потребляет 2х памяти тк символы в строке хранятся в unicode
тогда как что его читать? как ulong? тогда нужно будет самому писать всю обвязку.

Цитата Сообщение от nicolas2008 Посмотреть сообщение
Упрощенный вариант - не вариант. Каждый нюанс имеет значение
тема про Dictionary, а упрощенный вариант показан по просьбе и к теме не относится.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Это же посимвольный подсчёт.
Он делается совершенно по иному намного более оптимально.
Словарь как минимум нужно изменить на Dictionary<char, int>.
нет.
собственно я и не люблю публиковать код, так как вместо обсуждения проблемы, мы начинаем обсуждать код, который к теме имеет слабое отношение. Поиск может происходить по строкам до 8 байт, поэтому там никакой char не получится использовать.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Меня интересует как вы выделяете слова из текста, по какому принципу.
вы об этом?
source.Substring(i, 1)

Цитата Сообщение от Элд Хасп Посмотреть сообщение
КАЖДЫЙ символ преобразуете в строку, которую потом отправляете в мусор....
Ужас...!
Покажите код для слов.
Не понимаю о чем вы просите.

Цитата Сообщение от Катафалк Посмотреть сообщение
В чем заключается упрощенность?
Там много другого кода не связанного ни с Dictonary, ни с string.

Цитата Сообщение от Катафалк Посмотреть сообщение
Судя, по скорости 3 часа на 1 гиг, я даже представить не могу, что там такое
есть еще работа с List<bool>, много разного.

Цитата Сообщение от Катафалк Посмотреть сообщение
если хотите конструктивной помощи, покажите ВЕСЬ код. Без всяких упрощений.
нет, там есть идеи которые я не хочу показывать.

Добавлено через 4 минуты
Цитата Сообщение от Toros1992 Посмотреть сообщение
Почитайте про префиксное дерево. В нем можно добиться поиска О(1). Но платить будете памятью
спасибо, знаю о нём, но не думаю что осилю реализацию.
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,762
Записей в блоге: 2
21.11.2020, 20:03
Лучший ответ Сообщение было отмечено belalugoci как решение

Решение

Ну тогда ответ на изначальный вопрос в теме прост.
Да, если вас не устраивает стандартный функционал, то все сводиться к самостоятельной реализации необходимого.
Но что-то мне подсказывает, проблема у вас не в dictionary. А в том, как именно вы его используете. Но показывать это не хотите. Тут тупик.
1
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
21.11.2020, 20:08
Цитата Сообщение от belalugoci Посмотреть сообщение
собственно я и не люблю публиковать код, так как вместо обсуждения проблемы, мы начинаем обсуждать код, который к теме имеет слабое отношение.
Этот код имеет к теме самое прямое отношение. Поскольку сам dictionary не может у вас тормозить так, что слова в гигабайте текста будут считаться 3 часа. Проблема в чем-то другом, и в чем именно вам никто не может сказать, не видя кода. Ну не хотите, так не хотите, ваше дело.
Цитата Сообщение от belalugoci Посмотреть сообщение
Там много другого кода не связанного ни с Dictonary, ни с string.
Так вы покажите код, который непосредственно обрабатывает кусок текста, разбивает на слова, считает их в этом dictionary.
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
21.11.2020, 20:27  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Этот код имеет к теме самое прямое отношение.
не имеет совсем

Цитата Сообщение от Катафалк Посмотреть сообщение
Поскольку сам dictionary не может у вас тормозить так, что слова в гигабайте текста будут считаться 3 часа
эту историю придумали вы, я вообще нигде не говорил что Dictionary что-то там считает 3 часа.

Цитата Сообщение от Катафалк Посмотреть сообщение
Проблема в чем-то другом
Несомненно

Цитата Сообщение от Катафалк Посмотреть сообщение
и в чем именно вам никто не может сказать, не видя кода
Убедительная просьба прочитать самое первое моё сообщение, чтобы понимать о чем тема.

Цитата Сообщение от Катафалк Посмотреть сообщение
Так вы покажите код, который непосредственно обрабатывает кусок текста, разбивает на слова, считает их в этом dictionary.
C#
1
2
3
4
5
6
7
8
string source = File.ReadAllText(@"d:\work\words\a.txt", Encoding.GetEncoding(1251));
Dictionary<string, int> Freq = new Dictionary<string, int>();
for (int i = 0; i < source.Length; i++)
{
    if (!Freq.ContainsKey(source.Substring(i, 1)))
        Freq.Add(source.Substring(i, 1), 0);
    Freq[source.Substring(i, 1)]++;
}
source - весь текст
source.Substring(i, 1) - кусок текста, разбитый на слово
Freq[source.Substring(i, 1)]++ - подсчёт в Dictionary.
Но хочу сказать еще раз - тема о Dictionary и том - можно ли и нужно ли на что-то его менять ВООБЩЕ, а не в контексте моего приложения.
0
 Аватар для JustinTime
964 / 582 / 268
Регистрация: 20.12.2016
Сообщений: 1,506
21.11.2020, 20:34
Тестировал с файлом 1.6 МБ
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
string source = File.ReadAllText(@"c:\temp\1.txt", Encoding.GetEncoding(1251));
 
var s = new System.Diagnostics.Stopwatch();
                        
s.Start();
Dictionary<string, int> Freq = new Dictionary<string, int>();
for (int i = 0; i < source.Length; i++)
{
    if (!Freq.ContainsKey(source.Substring(i, 1)))
        Freq.Add(source.Substring(i, 1), 0);
    Freq[source.Substring(i, 1)]++;
}
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds); //653
s.Reset();
 
s.Start();
Dictionary<char, int> Freq2 = new Dictionary<char, int>();
foreach (var c in source)
{
    if (!Freq2.ContainsKey(c))
        Freq2[c] = 0;
    Freq2[c] += 1;
}
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds); //278
 
s.Reset();
s.Start();
var freq3 = source.GroupBy(x => x).Select(g => new { Key = g.Key, Val = g.Count() }).ToList();
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds); //143
 
s.Reset();
s.Start();
var min = source.Min();
var max = source.Max();
 
var a = new int[max - min + 1];
 
foreach(var c in source)
{
    a[c - min] += 1;
}
 
Dictionary<char, int> Freq4 = new Dictionary<char, int>();
for (int i = 0; i < a.Length; i++)
{
    if (a[i] != 0)
    {
        Freq4[Convert.ToChar(min + i)] = a[i];
    }
}
 
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds); //98
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
21.11.2020, 20:38
Цитата Сообщение от belalugoci Посмотреть сообщение
вы об этом?
source.Substring(i, 1)
Да, об этом.
Вы ранее писали, что анализируете слова в тексте файла.
Но посмотрите, что вы делаете в коде.

Вы получаете поток байтов из ASCII файла.
Каждый байт преобразуется в символ (char) - это не менее 2 байт.
Из полученной последовательности символов создаёте единую строку (string).
Потом во в цикле проходите по каждому символу строки - ведь source.Substring(i, 1) извлекает только один символ.
Каждый символ минимум преобразовываете в две строки, а иногда в три строки.
Которые, после цикла сразу отправляются в мусор.

В итоге на 1ГБ исходного потока файла у вас генерируется 5-8 ГБ мусора.

Вам нужно собрать информацию о БАЙТАХ, но вы зачем-то их ТРИ-ЧЕТЫРЕ раза конвертируете даже не в Char, а в String.
Конечно будет обвал производительности.

Байт имеет всего 256 состояний.
Зачем вам словарь?
Собирайте всё в обычный массив, в котором индекс означает ASCII код.

Вот простой код, так сказать "в лоб" .
Но и то он будет многократно быстрее вашего.
C#
1
2
3
4
byte[] source = File.ReadAllBytes(@"d:\work\words\a.txt");
int[] Freq = new int[256];
foreach(byte code in source)
    Freq[code]++;
Добавлено через 4 минуты
Цитата Сообщение от belalugoci Посмотреть сообщение
source.Substring(i, 1) - кусок текста, разбитый на слово
Это не кусок текста, а только ОДИН символ для чего-то представленный в string.
1
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
21.11.2020, 20:41
Цитата Сообщение от belalugoci Посмотреть сообщение
Но хочу сказать еще раз - тема о Dictionary и том - можно ли и нужно ли на что-то его менять ВООБЩЕ, а не в контексте моего приложения.
В таком случае тему можно закрывать как бессмысленную. Потому что обсуждение о применимости структура данных ВООБЩЕ без учета контекста решаемой задачи - не более осмысленно, чем обсуждать, каким пальцем нужно ковыряться в носу.
1
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
21.11.2020, 20:45  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Каждый символ минимум преобразовываете в две строки, а иногда в три строки.
почему в 2-3?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вам нужно собрать информацию о БАЙТАХ
нет

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Зачем вам словарь?
потому что ключ может быть в 8 символов

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но и то он будет многократно быстрее вашего.
как вы запихаете в byte информацию объемом в 8 байт?

У нас уже был в других темах подобный разговор и сейчас он 1 в 1 повторяется - вы игнорируете тему и заняты оптимизацией ПРИМЕРА кода, который к задаче имеет далёкое отношение.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
21.11.2020, 20:46
Цитата Сообщение от belalugoci Посмотреть сообщение
нет.
собственно я и не люблю публиковать код, так как вместо обсуждения проблемы, мы начинаем обсуждать код, который к теме имеет слабое отношение. Поиск может происходить по строкам до 8 байт, поэтому там никакой char не получится использовать.
Код имеет прямое отношение к оптимизации.
Как можно его оптимизировать не видя его?
Для нормальной быстрой реализации, вам надо работать с исходной информацией в её исходном виде - поток байтов.
И чтобы понять как вы выделяете слова из текста, надо видеть ваш код.
В представленном вами коде я объяснил причины провала производительности - генерацию огромного количества мусорных строк.
Но если это не ваш реальный код, то исправить код который я не вижу - я не могу.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
21.11.2020, 20:48
Цитата Сообщение от belalugoci Посмотреть сообщение
вы игнорируете тему и заняты оптимизацией ПРИМЕРА кода, который к задаче имеет далёкое отношение
Потому что вы код актуальный не предоставляете. Поэтому и оптимизируем то, что есть...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
21.11.2020, 20:50
Цитата Сообщение от belalugoci Посмотреть сообщение
почему в 2-3?
C#
1
2
3
4
5
6
7
8
9
10
11
// Преобразование ASCII в string увеличивает объём минимум в два раза
string source = File.ReadAllText(@"d:\work\words\a.txt", Encoding.GetEncoding(1251));
 
Dictionary<string, int> Freq = new Dictionary<string, int>();
 
for (int i = 0; i < source.Length; i++)
{
    if (!Freq.ContainsKey(source.Substring(i, 1))) // Создаётся строка из ОДНОГО символа
        Freq.Add(source.Substring(i, 1), 0); // Создаётся второй раз строка из этого же символа
    Freq[source.Substring(i, 1)]++; // Создаётся третий раз строка из этого же символа
}
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
21.11.2020, 20:52  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
В таком случае тему можно закрывать как бессмысленную. Потому что обсуждение о применимости структура данных ВООБЩЕ без учета контекста решаемой задачи - не более осмысленно, чем обсуждать, каким пальцем нужно ковыряться в носу.
чтобы это написать нужно было две страницы обсуждать всё кроме темы XD ребят, вы меня никогда не разочаровываете.

Цитата Сообщение от uzhsoft Посмотреть сообщение
Тестировал с файлом 1.6 МБ
какова цель тестирования?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Это не кусок текста, а только ОДИН символ для чего-то представленный в string.
вы предлагаете всегда и всюду писать код таким образом чтобы строки длиной в 1 символ преобразовывать в byte? а код в 2 и более символов обрабатывать как строку? это разумно? например по статистике у меня получается около 80000 записей в Dictionary, где записей в 1 символ всего 1200. Это всего 2%, думаете усилия на написание дополнительного кода окупятся?
Как я и писал выше, я не против того чтобы строку читать например в Uint64[], но тогда все операции над информацией придется писать самому. Это разумно, если код идёт в продакшн, а на этапе тестирования идей на первом месте простота написания кода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2020, 20:52

Более быстрая альтернатива циклической вставке в таблицу
Задача звучит так: При помощи простого SELECT вставить миллион записей в таблицу базы в цикле. Проанализировать, насколько это быстро ...

Улучшенная альтернатива HDD или ухудшенная альтернатива SSD
Как я заметил, в ПК для офисных задач самое узкое место - это устройство хранения данных. Поэтому SSDшники повышают удобство работы за...

Как достать dictionary из dictionary?
Подскажите пожалуйста как получить значение dictionary который находится внутри другого dictionary? Я не понимаю как обратиться к нему. ...

Создать запрос Dictionary в Dictionary
Только учусь программировать и поэтому не очень разобрался с LINQ. У меня есть Dictionary&lt;string, Dictionary&lt;string,...

Отбор из Dictionary вложенного в Dictionary
Здравствуйте, есть такой код: private Dictionary&lt;string, Dictionary&lt;int, string&gt;&gt; vt = new Dictionary&lt;string, Dictionary&lt;int,...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru