Я делал эксперимент по скорости и приурочил встроенную функцию к обычной функции, и я неоднократно получал лучшее время на регулярной функции. Можете ли вы, пожалуйста, взглянуть на код и помочь мне разобраться, почему это означает, что инкрустация должна улучшить скорость.C++: Почему регулярная функция работает быстрее, чем функция Inline?
Благодаря
#include "stdafx.h"
#include <iostream>
#include "time.h"
inline int getMaxInline(int x, int y)
{
return (x > y) ? x : y;
}
int getMaxRegular(int, int);
int _tmain(int argc, _TCHAR* argv[])
{
clock_t inlineStart;
clock_t inlineFinish;
clock_t regularStart;
clock_t regularFinish;
inlineStart = clock();
std::cout<<"inline max of 20 and 10 = "<<getMaxInline(10, 20)<<std::endl;
inlineFinish = clock();
std::cout<<"Time elapsed for inline = "<<(double(inlineFinish - inlineStart)/CLOCKS_PER_SEC)<<std::endl;
regularStart = clock();
std::cout<<"regular max of 20 and 10 = "<<getMaxRegular(20, 10)<<std::endl;
regularFinish = clock();
std::cout<<"Time elapsed for regular = "<<(double(regularFinish - regularStart)/CLOCKS_PER_SEC)<<std::endl;
return 0;
}
int getMaxRegular(int x, int y)
{
return (x > y) ? x : y;
}
Моего последнее 3 испытания гласило:
рядных = 0,042 регулярного = 0,003
рядных = 0,004 регулярного = 0,002
рядные = 0,006 регулярного = 0,002
Любые идеи?
Благодаря
Вывод, который вы показываете, не является выходным кодом.ваша функция getMaxRegular не отображается. как мы знаем, что это не сфальсифицировано? Кроме того, inline - это предложение, а не команда. вам нужно убедиться, что он, по сути, встроен компилятором. – thang
Метод синхронизации также полностью фиктивный. –
Также часы: возвращает процессорное время, затрачиваемое программой. Это не реальное время работы ... и посмотрите на свои #s. они настолько малы, что вы, вероятно, просто измеряете шум. в этом посте так много чего не так. – thang