Проблема объяснена в заголовке. Каждая другая часть моего кода быстрее, иногда значительно. Я не понимаю, почему это было бы исключением. < /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
Почему мой код умножения матрицы медленнее после обновления до .NET 9 от .NET 4.8.1? ⇐ C#
Место общения программистов C#
1752908368
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[i] = new float[n];
}
Random random = new Random();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
table[i][j] = random.Next(0, 10);
}
}
float[][] result = new float[n][];
for (int i = 0; i < n; i++)
{
result[i] = 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][i];
}
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][i] = 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 |
Подробнее здесь: [url]https://stackoverflow.com/questions/79701546/why-is-my-matrix-multiplication-code-slower-after-updating-to-net-9-from-net-4[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия