По следам обсуждения
http://mirror.codeforces.com/comments/264#comment-3078
На c# умножаем две квадратных матрицы. В одном случае - каждая матрица хранится в массиве массивов, в другом - в двухмерном массиве.
[дисклеймер: эти измерения подобны измерению числа оборотов двигателя на холостом ходу, а не средней скорости автомобиля в условиях гонки, и т.п., проводились один раз и т.п.]
Я взял код maslowmw, изменил size на 500, убрал распечатку времени (что дает несущественную разницу) и понес гонять его в Topcoder Practice Room. К моему удивлению, действительно в той версии дотнета, что установлена на топкодере, двухмерный массив оказался медленнее массива массивов. Меня это заинтересовало и я решил провести измерения других вариантов. Вот они, а выводы делайте сами.
c#:
[i][j]: 1.328s
[i][j]: 1.156s % size = const int
[i,j]: 1.516s
[i*size+j]: 0.875s
[i*size+j]: 0.703s % size = const int
c++:
int [][]: 0.266s % const int, global
int **: 0.791s
[i*size+j]: 0.286s % where size = const int
[i*size+j]: 0.695s % where size = input parameter
vector<vector<int>> : 0.478s % where size = const int
vector<vector<int>> : 0.608s % where size = input parameter
java:
[i][j]: 1.927s
[i*size+j]: 1.306s
p.s. мэнтайнерам сайта: создайте FAQ по оформлению. и еще, при переходе из почты по ссылке на русский коммент, а активен английский, то коммент разумеется не видно, что запутывает.
Интересно просто насколько он быстро работает :)
Кстати что значит c++ int **? Динамический массив динамических массивов?
О том, что такая проверка нестрогая, я предупредил с самого начала.
И умышленно тестировал именно на топкодере, чтобы никаких "А У МЕНЯ, А У МЕНЯ" не возникало.