Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Эталон измерения цены на плюсах / 7 сообщений из 7, страница 1 из 1
12.08.2013, 14:04
    #38363157
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эталон измерения цены на плюсах
Есть такое понятие как сложность алгоритма относительно n-элементов на входе.
Самая простая техника подсчета сложности - посчитать кол-во циклов и сколько их вложено вдруг в друга.

Но, бывает нам поставляются функции, к которым мы не можем глянуть под капот, но они являются кирпичиками наших алгоритмов, которые для нас являются критическими, то есть для которых мы хотим посчитать цену.

Ну самое типичное классическое попадалово objList.numberOfItems(). const или linear? бывают дурацкие инструменты, где такое есть линеар...

- - - - - - - - -

Классическим инструментом проверки цены функции является итерлям:

Код: plaintext
1.
profmark(); for(int i = 0; i < 1000 * 1000; i++) func(); profmark().print();



Вопрос: какая операция в плюсах может считаться единицей измерения функциональной операции?

Все знают, что sizeof измеряет в char'ах. А что может быть чаром для измерения количества операций. Что может быть попугаем в данном случае?

Бонусный вопрос: является ли подобное операцией вообще?

Код: plaintext
1.
a = a; // для int a = 5;
...
Рейтинг: 0 / 0
12.08.2013, 16:56
    #38363548
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эталон измерения цены на плюсах
Lumix
Вопрос: какая операция в плюсах может считаться единицей измерения функциональной операции?



В плюсах, так же, как и в любом другом языке, такой операции нет.
Операция выбирается каждый раз в зависимости от алгоритма, который оценивается.
Например:

Алгоритм "сотрировка" -- операция "ставнение двух элементов" (обычно).

Алгоритм "поиск элемента в коллекции" -- операция "сравнение элемента коллекции и искомого".

Алгоритм "подсчёт элементов коллекции" -- операция "чтение элемента коллекции".

И так далее.
...
Рейтинг: 0 / 0
12.08.2013, 16:57
    #38363552
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эталон измерения цены на плюсах
Lumix
Бонусный вопрос: является ли подобное операцией вообще?

Код: plaintext
1.
a = a; // для int a = 5;



Это я не понял.

Конечно, присваивание в С++ является операцией.
...
Рейтинг: 0 / 0
12.08.2013, 18:14
    #38363672
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эталон измерения цены на плюсах
MasterZivОперация выбирается каждый раз в зависимости от алгоритма, который оценивается.
Например:

Алгоритм "сотрировка" -- операция "ставнение двух элементов" (обычно).

Алгоритм "поиск элемента в коллекции" -- операция "сравнение элемента коллекции и искомого".

Алгоритм "подсчёт элементов коллекции" -- операция "чтение элемента коллекции".

И так далее.


Понятно, спасибо.
...
Рейтинг: 0 / 0
12.08.2013, 19:51
    #38363778
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эталон измерения цены на плюсах
А что, тупо померять время работы на N=1,2,4,...10500 и потом построить график зависимости
нынче некошерно?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.08.2013, 19:56
    #38363786
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эталон измерения цены на плюсах
Dimitry SibiryakovА что, тупо померять время работы ...Lumix он такой - простых путей не ищет.
...
Рейтинг: 0 / 0
13.08.2013, 12:09
    #38364445
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эталон измерения цены на плюсах
Dimitry SibiryakovА что, тупо померять время работы на N=1,2,4,...10500 и потом построить график зависимости
нынче некошерно?


Этот метод замера дает оценку комплексити алгоритма. А вопрос темы был про поиск единицы измерения комплексити для плюсов.

Пример, у нас есть два алгоритма (две функции) про которые мы знаем, что они обе обладают линейной комплексити.

Но если у нас есть некая единица измерения (аналог sizeof), то мы можем сказать, что стоимость первой функции 5 попугаев, а стоимость второй функции 35 попугаев. Хотя обе они линейны.

Существует формулировка, которая позволяет нам сказать, что несмотря на на то, что обе функции линейны по комплексити, первая стоит 5n, а вторая стоит 35n, но в этой теме мне сказали, что n для каждой функции всегда будет свое. Например, она функция перебирает инты, а другая строки. Обе могут быть 5n, но первая будет стоит всего 5 попугаев, а вторая целых 75 попугаев.

Вот про что был вопрос.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Эталон измерения цены на плюсах / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]