LINUX.ORG.RU

История изменений

Исправление bormant, (текущая версия) :

Далеко ходить не надо https://github.com/kostya/benchmarks

https://github.com/kostya/benchmarks/blob/master/matmul/matmul.c
В mm_init() вызывается calloc() по количеству строк матрицы.
Ни для кого не секрет, что calloc() заполняет нулями выделенную память, что с учетом последующей поэлементной инициализации (вызов mm_init()) является диким оверхэдом.
Второй раз это стреляет при создании временной транспонированной матрицы.
И затем mm_destroy() для каждой строки матрицы.
Итог: 12-е место в тесте matmul по времени (и это с трехкратным оверхэдом по заполнению памяти и оверхэдом по построчным вызовам менеджера памяти).

Исправление bormant, :

Далеко ходить не надо https://github.com/kostya/benchmarks

https://github.com/kostya/benchmarks/blob/master/matmul/matmul.c
В mm_init() вызывается calloc() по количеству строк матрицы.
Ни для кого не секрет, что calloc() заполняет нулями выделенную память, что с учетом последующей поэлементной инициализации (вызов mm_init()) является диким оверхэдом.
Второй раз это стреляет при создании временной транспонированной матрицы.
И затем mm_destroy() для каждой строки матрицы.
Итог: 12-е место в тесте matmul по времени (и это с трехкратным оверхэдом по заполнению памяти и оверхэдом по построчным вызовам).

Исходная версия bormant, :

Далеко ходить не надо https://github.com/kostya/benchmarks

https://github.com/kostya/benchmarks/blob/master/matmul/matmul.c
В mm_init() вызывается calloc() по количеству строк матрицы.
Ни для кого не секрет, что calloc() заполняет нулями выделенную память, что с учетом последующей поэлементной инициализации (вызов mm_init()) является диким оверхэдом.
Второй раз это стреляет при создании временной транспонированной матрицы.
Итог: 12-е место в тесте matmul по времени (и это с трехкратным оверхэдом).