Как я должен правильно представлять многопараметрическую сложность с помощью Google Benchmark?

#google-benchmark

#google-benchmark

Вопрос:

Библиотека Google microbenchmark поддерживает оценку сложности алгоритма, но все выражается в сообщении фреймворку, каков ваш размер N . Мне любопытно, каков наилучший способ представления M N алгоритмов в этой среде. В моем тесте я просматриваю декартово произведение значений M amp; N в моем тесте.

Должен ли я вызывать SetComplexityN с M N помощью (amp; для O(MN) алгоритмов, которые, как я предполагал SetComplexityN , аналогичны M*N )? Если бы я хотел жестко запрограммировать сложность алгоритма (по сравнению с наилучшей подгонкой) benchmark::oN , сопоставляется ли это с M N и benchmark::oNSquared сопоставляется с O(MN) ?

Ответ №1:

Это еще не то, что мы рассматривали в библиотеке.

Если вы установите сложность M N и используете oN , то подходящая кривая, используемая для минимального вычисления наименьших квадратов, будет линейной M N .

Однако, если вы установите сложность M*N и используете oNSquared , мы постараемся соответствовать pow(M*N, 2) , что, скорее всего, не то, что вы хотите, поэтому я думаю, что все же использование oN будет уместным.