问题描述
我当前正在尝试分析共享库。不幸的是,sprof似乎无法在我的系统上运行,因此我正在使用oprofile。
但是,当我调查配置文件数据时,大多数时间都表明要花在模板化方法上。这是可以预期的,因为大多数数字计算都在该方法中。但是,opreport表示此模板花费了一定的时间。这可能可以解释为什么计算似乎比预期的慢。这些专长中的一些专长包括优化的代码,而其他专长则没有,并且opreport表示花费时间在优化程度较低的版本上。共享库包括实例化的两个版本,但是我必须知道决定采用哪个版本的代码是否正确。
我在模板中添加了一些import requests
from allauth.socialaccount.providers.oauth2.views import (
OAuth2Adapter,OAuth2CallbackView,OAuth2LoginView,)
from config.settings.base import EXAMPLE_URLS
from app.users.auth_provider.provider import ExampleProvider
class ExampleAdapter(OAuth2Adapter):
provider_id = ExampleProvider.id
access_token_url = EXAMPLE_URLS["web"] + "oauth/token"
authorize_url = EXAMPLE_URLS["web"] + "oauth/authorize"
profile_url = EXAMPLE_URLS["api"] + "me"
def complete_login(self,request,app,access_token,**kwargs):
headers = {"Authorization": "Bearer %s" % access_token}
extra_data = requests.get(self.profile_url,headers=headers)
return self.get_provider().sociallogin_from_response(request,extra_data.json())
oauth2_login = OAuth2LoginView.adapter_view(ExampleAdapter)
oauth2_callback = OAuth2CallbackView.adapter_view(ExampleAdapter)
,这些似乎表明采用了正确的专业化,但是我仍然对opreport输出感到困惑。
编辑:
以下是有关我在做什么的更多详细信息。该代码必须能够在任何长度的输入上运行,但是如果我知道大小,我可以对其进行优化。所以我正在做这样的事情:
cout
在实际的代码中,我使用一些模板魔术来允许将代码优化为的最大数量为template<size_t N>
struct simulator {
static void run(...) // optimized version for known N
};
template<>
struct simulator<0> {
static void run(...) // unoptimized version for any size
};
void simulate(....) {
switch(n) {
case(1):
simulator<1>::run(...);
break;
case(2):
simulator<2>::run(...);
break;
...
default:
simulator<0>::run(...);
}
}
,但是想法是相同的。现在,我需要确保实际上#define
从未被调用过,而本来就不应该调用它。但是opreport表示仅运行了此命令,没有其他命令(simulator<0>::run()
不同意。)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)