2 posts tagged

C++

#4

Какую интересную штуку я обнаружил пока делал “домашнее задание”.
Те, кто программируют на C++, наверно, знают, что есть такое ключевое слово inline. Оно предлагает компилятору встроить описываемую функцию в точку её вызова. Если не вдаваться в глубокие подробности, то такие функции несколько убыстряют работу программы, но увеличивают бинарный файл. Так вот, если попробовать переопределить оператор ’<<', а внутри работать с объектом, у которого были описаны inline функции, то компилятор будет выкидывать ошибку.
Создадим файл matrix.cpp с таким содержанием

В файле matrix.h определим класс matrix так

Основной файл main.cpp будет выглядеть так

Собственно, было бы интересно узнать с чем связано такое поведение.

 No comments   2012   C++   Загадки

#1

От скуки или от чего ещё решил померить время, необходимое для доступа к элементу массива, двумерного массива и стд::вектора с одинаковым количеством элементов.
Понятно, что замеры вообще ни о чём. Просто было интересно есть ли разница между одномерными массивами, двумерными массивами и векторами. Оказалось, что в целом нифига разницы нет. С точки зрения теории это вообще тупо мерить, потому что по сути одно и то же, но с точки зрения практики хотелось убедиться.
В общем, результаты c общим количеством элементов n = 1000000 такие:

Двумерный массив[i][j] Двумерный массив[i*N + j] Одномерный массив[i*N+j] Вектор[i*N + j]
1,91564 1,90829 1.96279 1,95105
1,95626 1,94341 1,93736 1,94809
1,94569 1,90196 1,98376 1,91115

Время здесь указано в секундах, которые понадобились, чтобы пробежаться и считать каждый элемент из массива.

 No comments   2012   C++