Я немного работаю над производительностью виртуальных и запечатанных участников.
Ниже приведен мой тестовый код.
Выход
virtual total 3166ms
per call virtual 3.166ns
sealed total 3931ms
per call sealed 3.931ns
Я, должно быть, делаю что-то не так, потому что согласно этому виртуальный вызов быстрее, чем запечатанный вызов.
Я работаю в режиме выпуска с включенной функцией «Оптимизация кода».
Изменить: при работе за пределами VS (в качестве консольного приложения) время близко к нулю. . но виртуальное почти всегда выходит на первый план.
[TestFixture]
public class VirtTests
{
public class ClassWithNonEmptyMethods
{
private double x;
private double y;
public virtual void VirtualMethod()
{
x++;
}
public void SealedMethod()
{
y++;
}
}
const int iterations = 1000000000;
[Test]
public void NonEmptyMethodTest()
{
var foo = new ClassWithNonEmptyMethods();
//Pre-call
foo.VirtualMethod();
foo.SealedMethod();
var virtualWatch = new Stopwatch();
virtualWatch.Start();
for (var i = 0; i < iterations; i++)
{
foo.VirtualMethod();
}
virtualWatch.Stop();
Console.WriteLine("virtual total {0}ms", virtualWatch.ElapsedMilliseconds);
Console.WriteLine("per call virtual {0}ns", ((float)virtualWatch.ElapsedMilliseconds * 1000000) / iterations);
var sealedWatch = new Stopwatch();
sealedWatch.Start();
for (var i = 0; i < iterations; i++)
{
foo.SealedMethod();
}
sealedWatch.Stop();
Console.WriteLine("sealed total {0}ms", sealedWatch.ElapsedMilliseconds);
Console.WriteLine("per call sealed {0}ns", ((float)sealedWatch.ElapsedMilliseconds * 1000000) / iterations);
}
}
Подробнее здесь: https://stackoverflow.com/questions/440 ... ethod-call
Насколько этот вызов виртуального метода быстрее, чем вызов запечатанного метода? ⇐ C#
Место общения программистов C#
1728468710
Anonymous
Я немного работаю над производительностью виртуальных и запечатанных участников.
Ниже приведен мой тестовый код.
Выход
virtual total 3166ms
per call virtual 3.166ns
sealed total 3931ms
per call sealed 3.931ns
Я, должно быть, делаю что-то не так, потому что согласно этому виртуальный вызов быстрее, чем запечатанный вызов.
Я работаю в режиме выпуска с включенной функцией «Оптимизация кода».
Изменить: при работе за пределами VS (в качестве консольного приложения) время близко к нулю. . но виртуальное почти всегда выходит на первый план.
[TestFixture]
public class VirtTests
{
public class ClassWithNonEmptyMethods
{
private double x;
private double y;
public virtual void VirtualMethod()
{
x++;
}
public void SealedMethod()
{
y++;
}
}
const int iterations = 1000000000;
[Test]
public void NonEmptyMethodTest()
{
var foo = new ClassWithNonEmptyMethods();
//Pre-call
foo.VirtualMethod();
foo.SealedMethod();
var virtualWatch = new Stopwatch();
virtualWatch.Start();
for (var i = 0; i < iterations; i++)
{
foo.VirtualMethod();
}
virtualWatch.Stop();
Console.WriteLine("virtual total {0}ms", virtualWatch.ElapsedMilliseconds);
Console.WriteLine("per call virtual {0}ns", ((float)virtualWatch.ElapsedMilliseconds * 1000000) / iterations);
var sealedWatch = new Stopwatch();
sealedWatch.Start();
for (var i = 0; i < iterations; i++)
{
foo.SealedMethod();
}
sealedWatch.Stop();
Console.WriteLine("sealed total {0}ms", sealedWatch.ElapsedMilliseconds);
Console.WriteLine("per call sealed {0}ns", ((float)sealedWatch.ElapsedMilliseconds * 1000000) / iterations);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/4406257/how-is-this-virtual-method-call-faster-than-the-sealed-method-call[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия