Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Перемещать десятки миллионов записеи в раме очень медленно. Между машинами — нереално.
struct Link<T>
{
int PoolId; //id массива
int ObjectId; //по факту индекс в массиве
//Тут всякая всячина с реализацией Equals, == и т. п.
}
её храните в своих «объектах» вместо настоящей ссылки и потом резолвите. К ней, соответственно, extension-методstatic T Resolve<T>(this Link<T> link)
{
//тут обрабатываете логику пулов
}
Нy не быду же я свои строки делать?А в чём проблема? Делаете под них точно такой же пул, только состоящий из большого массива char-ов. И храните оффсет в нём и длинну.
зачем вы тогда исползуете C#?Потому что он всеяден. Когда надо — можно аккуратно сделать такое вот эффективное с точки зрения GC решение. Ещё структуры очень активно используются в геймдеве (XNA, Unity3D), когда вообще нельзя создавать GC pressure.
Храним 300 миллионов объектов в CLR процессе