Метод C# в 100 раз медленнее с тремя возвратами против двух?C#

Место общения программистов C#
Ответить
Anonymous
 Метод C# в 100 раз медленнее с тремя возвратами против двух?

Сообщение Anonymous »

У меня немного странное поведение с методом, который я создал, когда пытаюсь протестировать его производительность, в основном, если я закомментирую/отключу один из возвратов в одном из операторов if, он будет меняться с 400 мс до 4 мс, почти как если бы он компилировался, а не фактически запускал код, это имело бы смысл, если бы после комментирования/отключения одного возврата он возвращал только true или false, поэтому у него была только одна опция, тогда я могу видеть, как компилятор оптимизирует его и всегда устанавливает это как логическое значение, а не запуск кода.

Кто-нибудь знает, что может происходить, или у вас есть рекомендации по лучшему способу запуска теста?

Мой тестовый код:

Vec3 spherePos = new Vec3(43.7527, 75.9756, 0);
double sphereRadisSq = 50 * 50;
Vec3 rayPos = new Vec3(-5.32301, 5.97157, -112.983);
Vec3 rayDir = new Vec3(0.457841, 0.680324, 0.572312);

sw.Reset();
sw.Start();
bool res = false;
for (int i = 0; i < 10000000; i++)
{
res = Intersect.RaySphereFast(rayPos, rayDir, spherePos, sphereRadisSq);
}
sw.Stop();
Debug.Log($"testTime: {sw.ElapsedMilliseconds} ms");
Debug.Log(res);


И статический метод:

public static bool RaySphereFast(Vec3 _rp, Vec3 _rd, Vec3 _sp, double _srsq)
{
double rs = Vec3.DistanceFast(_rp, _sp);
if (rs < _srsq)
{
return (true); //

Подробнее здесь: https://stackoverflow.com/questions/522 ... rns-vs-two
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»