Раз пошла тема про интернирование, вытащу вопрос со SO, который появился у меня недавно. Я баловался со строками и заметил разницу в поведении памяти при интернировании. Если коротко, то генерировал много строк из ограниченного набора символов. В net.core 3.1 размер кучи почему-то не уменьшался после сборки мусора, если количество строк (размер в памяти?) была больше определенного значения.
Код
class Program
{
public static void Main(string[] args)
{
long memory = GC.GetGCMemoryInfo().HeapSizeBytes;
Console.WriteLine(memory);
Get10MillionStringsInterned();
memory = GC.GetGCMemoryInfo().HeapSizeBytes;
Console.WriteLine(memory);
GC.Collect();
memory = GC.GetGCMemoryInfo().HeapSizeBytes;
Console.WriteLine(memory);
memory = GC.GetTotalMemory(true);
Console.WriteLine(memory);
Console.ReadKey();
}
static void Get10MillionStringsInterned()
{
var chars = new char[] { 'a', 'b', 'c', };
char[] word = new char[4];
Random r = new Random();
string[] strings = new string[10_000_000];
for (int i = 0; i < strings.Length; i++)
{
for (int j = 0; j < word.Length; j++)
{
word[j] = chars[r.Next(chars.Length)];
}
strings[i] = string.Intern(new string(word));
}
Console.WriteLine(strings[r.Next(strings.Length)]);
}
}
Вывод консоли
0
aabb
80082696
77312 <-- Heap size
76480
Разница, если малость прибавить символов в массив chars:
0
badb
80092448
80086896 <-- Heap size
86200
А .net Framework и 5.0 работали как я предполагал.
Имхо, справедливо давать провайдерам сервисов возможность показа рекламы, если ты за них не платишь. Я когда-то тоже болел этой хренью с облегчением, кастомизацией и т.п., но давно забил. Даже адблок не ставлю несколько лет. Разницы как-то не ощущаю.
У вас хоть МС что-то выпустила. Я вот приобрел ноут с win8.1, по привычке назвал юзера юзером и жил спокойно, пока не стал просыпаться по ночам от шума вентилятора. Проблема и решение оказались неожиданными.
По-моему здесь же на хабре была статья об экселе, вкратце формат был придуман скорее для быстродействия на тогдашних слабых машинках.
На coursere есть Nand2Tetris, только там всё виртуально.
Хосподя, как видать бомбит у автора, что аж кушать не может и написал целую статью с натягиванием совы своего случая на обобщение ряда людей.
Что-то на эльфийском, не могу прочесть.
Всем, где нумеруют индексы с нуля.
Каноничней выводить 1234.
Разница, если малость прибавить символов в массив chars:
А .net Framework и 5.0 работали как я предполагал.
Плюс JIT может тупо оптимизировать struct в значение регистра.
А каковы перспективы зафиксировать убыток и подать иск к гуглу?
Можно теперь написать
foreach (int i in 0..n);
если энумератор к range прикрутить.
Имхо, справедливо давать провайдерам сервисов возможность показа рекламы, если ты за них не платишь. Я когда-то тоже болел этой хренью с облегчением, кастомизацией и т.п., но давно забил. Даже адблок не ставлю несколько лет. Разницы как-то не ощущаю.
В Узбекистане многие первые терминалы оплаты пластиковых карт подключались по диал-ап для транзакций. Интернеты были далеко не везде.
На чём выполнена CRM?
Люди делятся на тех, кто еще не делает бекапы и тех, кто уже делает. (с)
Другие интересные картинки можно накликать здесь — www.epiprev.it
Краткая версия отчета — www.salute.gov.it/portale/caldo/SISMG_sintesi_ULTIMO.pdf (выходят новые, этот могут удалить)
В общем креатив г; автор — м, причём опасный м.