Сообщение Re[4]: Oberon vs C# от 12.04.2024 21:01
Изменено 12.04.2024 21:07 syrompe
Re[4]: Oberon vs C#
Окей, принимается. В исходном варианте такой же N^2.
Запустил ваш код и дело таки похоже в делегате. Ну скорее всего в лишнем копировании данных да его вызова.
Вот такой код работает на 12 секунд быстрее вашего (21с против 33с) на моей машине:
Запустил ваш код и дело таки похоже в делегате. Ну скорее всего в лишнем копировании данных да его вызова.
Вот такой код работает на 12 секунд быстрее вашего (21с против 33с) на моей машине:
using System.Diagnostics;
var m = 100_000;
var a = new double[m];
var s = (double)m;
for (var i = 0; i < m; i++)
{
a[i] = s;
s = s - 1;
}
var sw = new Stopwatch();
sw.Start();
Sort(a);
Console.WriteLine("HeLLO");
Console.WriteLine(sw.Elapsed);
static void Sort(double[] a)
{
for (var i = 0; i < a.Length; i++)
for (var j = 0; j < a.Length - 1 - i; j++)
if (a[j + 1] < a[j])
{
var t = a[j+1];
a[j + 1] = a[j];
a[j] = t;
}
}
Re[4]: Oberon vs C#
Окей, принимается. В исходном варианте такой же N^2.
Запустил ваш код и дело таки похоже в делегате. Ну скорее всего в лишнем копировании данных для его вызова.
Вот такой код работает на 12 секунд быстрее вашего (21с против 33с) на моей машине:
Запустил ваш код и дело таки похоже в делегате. Ну скорее всего в лишнем копировании данных для его вызова.
Вот такой код работает на 12 секунд быстрее вашего (21с против 33с) на моей машине:
using System.Diagnostics;
var m = 100_000;
var a = new double[m];
var s = (double)m;
for (var i = 0; i < m; i++)
{
a[i] = s;
s = s - 1;
}
var sw = new Stopwatch();
sw.Start();
Sort(a);
Console.WriteLine("HeLLO");
Console.WriteLine(sw.Elapsed);
static void Sort(double[] a)
{
for (var i = 0; i < a.Length; i++)
for (var j = 0; j < a.Length - 1 - i; j++)
if (a[j + 1] < a[j])
{
var t = a[j+1];
a[j + 1] = a[j];
a[j] = t;
}
}