LLVM JIT ускоряет выбор?

Это субъективно, но у меня проблемы с ускорением LLVM JIT. Подергивание больших массивов кода занимает в 50 раз больше времени, чем простая их интерпретация даже с включенной ленивой компиляцией.

Так что мне было интересно, как я могу ускорить подергивание, У Foo есть идентификатор (int) a) "Хороший" ли приведенный ниже код? б) Что я должен вернуть, если оба значения равны нулю? // оператор перегрузки == общедоступный статический логический оператор == (Foo a, Foo b) {...

У меня есть объект типа Foo .
Foo имеет Id (int)

a) "Хороший" ли приведенный ниже код?
б) Что я должен вернуть, если оба значения равны нулю?

// overload operator ==
public static bool operator ==(Foo a, Foo b)
{
    if (ReferenceEquals(x, y))
    {
        return true;
    }

    if (x == null && y == null)
    {
        return // ??? 
    }

    if (x == null || y == null)
    {
        return false; 
    }

    return x.Id == y.Id; // Ids are the same
}

public static bool Equals(Foo x, Foo y)
{
   return x == y;
}

РЕДАКТИРОВАТЬ:
c) Должен ли метод Equals вызывать == оператор или наоборот?

Последний вопрос
г) Возможно ли, что ReferenceEquals (x, y) == true AND x.Id! = Y.Id ?

5
задан serhio 2 November 2010 в 20:14
поделиться