Умножение на матрици (не четете, ако сте фен на Java)

Правилният тест трябва да гарантира, че едни и същи данни се обработват, така че премахнах генераторите на случайни числа в библиотеката и ги замених с явно генериране. Правилният тест е да се провери правилността на резултата, така че сега се използва резултатът от умножението.

Всеки код беше пуснат три пъти в стая за практикуване на topcoder 461 easy. Резултатите и кодът могат да се видят тук: http://advgreat.narod.ru/matrices.rar

Ако някой мисли, че правя нещо нередно - кодът до студиото.

Извинявам се на любителите на Java. Последния път забравих да включа последната ключова дума, сега я добавих.

За C# се опитах да измеря опцията, когато стойността на size не се задава от литерал, а се взема от входните данни - в този случай компилаторът няма да има шанс да познае какво ще бъде, когато програмата работи. Вярно е, че това засяга скоростта само за C / C ++.

За C# и Java изходът е:

ако имате нужда от двуизмерен масив или негов аналог, тогава индексирайте в

int[,] ще бъде най-бавният

int[][] ще работи малко по-бързо

int[] индексиран като arr[y*cols + x] ще бъде още по-бърз

Искам също да кажа на тези, които не знаят, че GCC поддържа VLA. Тоест следният код работи:

p.s. Защо написах този пост

Бях изненадан от фразата на Fedor в http://codeforces.com/blog/entry/254#comment-3033 за двумерни масиви в C#

в резултат на изпълнението на неговия код се оказа, че той е прав, а аз греша

Заинтересувах се от други начини за използване на масива и след това реших да карам малко други езици, като в същото време проверявах фразата на Питър, че Java е по-бавна от C #

сега реших да направя измерването правилно и да публикувам източника