Информация об изменениях

Сообщение Re[3]: Oberon vs C# от 12.04.2024 12:51

Изменено 12.04.2024 12:56 Serginio1

Re[3]: Oberon vs C#
Здравствуйте, Разраб, Вы писали:


Р>static void Sort(double[] a)

Р>{
Р> var Swap = (ref double x, ref double y) =>
Р> {
Р> var t = x;
Р> x = y;
Р> y = t;
Р> };

Р> for (var i = 0; i < a.Length; i++)

Р> for (var j = 0; j < a.Length — 1 — i; j++)
Р> if (a[j + 1] < a[j])
Р> Swap(ref a[j + 1], ref a[j]);
Р>}
Р>[/cs]

Ух ты еще и делегат пришпандорил!

static void Sort(double[] a)
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
     void Swap(ref double x, ref double y)
    {
        var t = x;
        x = y;
        y = t;
    };

    for (var i = 0; i < a.Length; i++)
        for (var j = 0; j < a.Length - 1 - i; j++)
            if (a[j + 1] < a[j])
                Swap(ref a[j + 1], ref a[j]);
  }
Re[3]: Oberon vs C#
Здравствуйте, Разраб, Вы писали:


Р>static void Sort(double[] a)

Р>{
Р> var Swap = (ref double x, ref double y) =>
Р> {
Р> var t = x;
Р> x = y;
Р> y = t;
Р> };

Р> for (var i = 0; i < a.Length; i++)

Р> for (var j = 0; j < a.Length — 1 — i; j++)
Р> if (a[j + 1] < a[j])
Р> Swap(ref a[j + 1], ref a[j]);
Р>}
Р>[/cs]

Ух ты еще и делегат пришпандорил!

static void Sort(double[] a)
{
//[MethodImpl(MethodImplOptions.AggressiveInlining)] можно попробовать. Хотя и так должен быть инлайнинг
     void Swap(ref double x, ref double y)
    {
        var t = x;
        x = y;
        y = t;
    };

    for (var i = 0; i < a.Length; i++)
        for (var j = 0; j < a.Length - 1 - i; j++)
            if (a[j + 1] < a[j])
                Swap(ref a[j + 1], ref a[j]);
  }


https://stackoverflow.com/questions/40943117/local-function-vs-lambda-c-sharp-7-0

Там тесты лямбд и локальных функций