Почему мой код умножения матрицы медленнее после обновления до .NET 9 от .NET 4.8.1?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой код умножения матрицы медленнее после обновления до .NET 9 от .NET 4.8.1?

Сообщение Anonymous »

Проблема объяснена в заголовке. Каждая другая часть моего кода быстрее, иногда значительно. Я не понимаю, почему это было бы исключением. < /P>
Я хотел бы протестировать это и в режиме x86, но я не смог получить Benchmarkdotnet работать на x86. < /P>
Для Clarity, да, я умножаю матрицу сам по себе.using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Running;
using System;
using System.Threading.Tasks;

namespace mmtest472
{
class Program
{
static void Main(string[] args)
{
var summary = BenchmarkRunner.Run();
}
}
[SimpleJob(RuntimeMoniker.Net472)]
[SimpleJob(RuntimeMoniker.Net90)]
public class MatMultTest472
{
[Benchmark]
public void MatMultTest()
{
int n = 3500;
float[][] table = new float[n][];
for (int i = 0; i < n; i++)
{
table = new float[n];
}
Random random = new Random();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
table[j] = random.Next(0, 10);
}
}
float[][] result = new float[n][];
for (int i = 0; i < n; i++)
{
result = new float[n];
}
_ = Parallel.For(0, n, i =>
{
float[] Col = new float[n]; // transpose column
for (int j = 0; j < n; j++)
{
Col[j] = table[j];
}
for (int j = 0; j < n; j++)
{
float Sum = 0;
for (int k = 0; k < n; k++)
{
Sum += table[j][k] * Col[k];
}
result[j] = Sum;
}
});
}
}
}
< /code>
Результаты: < /p>
BenchmarkDotNet v0.15.2, Windows 10 (10.0.19045.6093/22H2/2022Update)
Intel Xeon CPU E3-1231 v3 3.40GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK 9.0.302
[Host] : .NET 9.0.7 (9.0.725.31616), X64 RyuJIT AVX2 [AttachedDebugger]
.NET 9.0 : .NET 9.0.7 (9.0.725.31616), X64 RyuJIT AVX2
.NET Framework 4.7.2 : .NET Framework 4.8.1 (4.8.9310.0), X64 RyuJIT VectorSize=256

| Method | Job | Runtime | Mean | Error | StdDev |
|------------ |--------------------- |--------------------- |--------:|--------:|--------:|
| MatMultTest | .NET 9.0 | .NET 9.0 | 12.12 s | 0.229 s | 0.255 s |
| MatMultTest | .NET Framework 4.7.2 | .NET Framework 4.7.2 | 11.24 s | 0.041 s | 0.038 s |


Подробнее здесь: https://stackoverflow.com/questions/797 ... from-net-4
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»