SQL Server (запускающийся с 2000) установит счетчики производительности (просматриваемый от Performance Monitor или Perfmon).
Одна из встречных категорий (от установки SQL Server 2005 года:) - SQLServer:Databases
С одним экземпляром для каждой базы данных. Счетчики, доступные однако, не предоставляют счетчик Использования % ЦП или что-то подобное, хотя существуют некоторые счетчики скорости, которые Вы могли использовать для получения хорошей оценки ЦП. Пример был бы, если у Вас есть 2 базы данных, и измеренный уровень является 20 транзакциями/секунда на базе данных A и 80 сделками/секунда на базе данных B---тогда, Вы знали бы, что A способствует примерно 20% общего ЦП, и B способствует другим 80%.
здесь существуют некоторые дефекты, поскольку это предполагает, что вся сделанная работа является зависящей от ЦП, который, конечно, с базами данных это не. Но это было бы запуском, которому я верю.
Я не уверен, что среда выполнения предоставляет надежный программный метод получения размера объекта, однако для вас есть несколько вариантов:
Это действительно зависит от того, что вы имеете в виду. Вы можете предсказать, сколько байтов будет использовано самим списком, но это не то же самое, что спрогнозировать, сколько байтов может быть допущено к сборке мусора, если список станет подходящим для сбора.
Биты списка:
T []
- ссылка на массив, к которому будет иметь доступ только список) Сложный бит - решить, сколько считать. Каждый из них довольно легко вычислить (особенно если вы знаете, что T является ссылочным типом, например), но хотите ли вы подсчитать объекты , на которые ссылаются в списке? Эти ссылки единственные или нет?
Вы говорите, что хотите знать "в статистических целях" - не могли бы вы уточнить? Если вы можете сказать, что вас действительно интересует (и немного больше информации о том, что в списке и могут ли быть другие ссылки на те же объекты), мы, вероятно, могли бы помочь больше.
Это может быть ответ, полный охоты на лошади, но я собираюсь рискнуть и сказать, что если вы проводите статистические сравнения, выполните двоичную сериализацию объект в MemoryStream
, а затем посмотрите на его свойство Length
как таковое:
List<string> list = new List<string>
{
"This",
"is",
"a",
"test"
};
using (Stream stream = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, list);
Console.WriteLine(stream.Length);
}
Обратите внимание, что это может измениться между разными версиями платформы и будет полезно только для сравнения между объектами графики в одной программе.