Сообщение 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)
Р>{
Р> 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]
Ух ты еще и делегат пришпандорил!
https://stackoverflow.com/questions/40943117/local-function-vs-lambda-c-sharp-7-0
Там тесты лямбд и локальных функций
Р>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
Там тесты лямбд и локальных функций