dotnet/runtime

Optimize Half.CompareTo

Open

#43.117 aperta il 6 ott 2020

Vedi su GitHub
 (4 commenti) (0 reazioni) (0 assegnatari)C# (5445 fork)batch import
area-System.Runtimehelp wantedtenet-performance

Metriche repository

Star
 (17.886 star)
Metriche merge PR
 (Merge medio 12g 11h) (661 PR mergiate in 30 g)

Descrizione

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

Guida contributor