dotnet/runtime

Optimize Half.CompareTo

Open

#43 117 ouverte le 6 oct. 2020

Voir sur GitHub
 (4 commentaires) (0 réactions) (0 assignés)C# (5 445 forks)batch import
area-System.Runtimehelp wantedtenet-performance

Métriques du dépôt

Stars
 (17 886 stars)
Métriques de merge PR
 (Merge moyen 12j 11h) (661 PRs mergées en 30 j)

Description

There is a same problem as mentioned here. In the worst case there can be 8 calls to IsNaN() due to two NaN-checks at the beginning of all operators

 public int CompareTo(Half other)
        {
            if (this < other) 
            {
                return -1;
            }

            if (this > other)
            {
                return 1;
            }

            if (this == other)
            {
                return 0;
            }

            if (IsNaN(this))
            {
                return IsNaN(other) ? 0 : -1;
            }

            Debug.Assert(IsNaN(other));
            return 1;
        }

Seems like simple operators inlining should help

Guide contributeur