我想检查boost::variant在我的代码中应用的程序集输出,以便查看哪些中间调用被优化掉了.
当我编译以下示例(使用GCC 5.3 g++ -O3 -std=c++14 -S)时,似乎编译器优化了所有内容并直接返回100:
(...)
main:
.LFB9320:
.cfi_startproc
movl $100, %eax
ret
.cfi_endproc
(...)
Run Code Online (Sandbox Code Playgroud)
#include <boost/variant.hpp>
struct Foo
{
int get() { return 100; }
};
struct Bar
{
int get() { return 999; }
};
using Variant = boost::variant<Foo, Bar>;
int run(Variant v)
{
return boost::apply_visitor([](auto& x){return x.get();}, v);
}
int main()
{
Foo f;
return run(f);
}
Run Code Online (Sandbox Code Playgroud)
但是,完整的程序集输出包含的内容远远超过上面的摘录,对我而言,它看起来永远不会被调用.有没有办法告诉GCC/clang删除所有"噪音"并输出程序运行时实际调用的内容?
完整装配输出:
.file "main1.cpp"
.section .rodata.str1.8,"aMS",@progbits,1
.align 8
.LC0:
.string "/opt/boost/include/boost/variant/detail/forced_return.hpp"
.section .rodata.str1.1,"aMS",@progbits,1
.LC1: …Run Code Online (Sandbox Code Playgroud) 我在django中实现了密码恢复功能.使用我的方法,新密码将被发送到他输入的电子邮件ID.当我提供正确的电子邮件(数据库中存在的电子邮件ID)时,它的工作正常.但是当我给出一个不在数据库中的电子邮件ID时,它会给我这个错误'DoesNotExist at/forgotPassword /
大学详细信息匹配查询不存在.'.有人可以帮助解决这个问题.将粘贴我的代码.有人可以帮我解决这个问题.
forgotPassword.html()
def forgotPassword(request):
if request.POST:
email=request.POST.get("email")
user = UniversityDetails.objects.get(email=email)
if(not user):
print "No user"
return render_to_response("forgotPassword.html")
else:
newPassword = user.password
send_mail('Password Recovery', 'The password for your site is '+ newPassword, 'rv_nair@gmail.com',
['rv_ks@gmail.com'], fail_silently=False)
return render_to_response("passwordRecovery.html")
return render_to_response('forgotPassword.html')
Run Code Online (Sandbox Code Playgroud)
HTML
<form name="forgotPassword" method="POST" id="myFormid" action="http://10.1.0.90:8080/forgotPassword/">
<div style="float:center;width:100%;color:#0000A0">
Enter your E-mail ID</label><br/> <input type="text" name="email" size="25" />
<input type="submit" value="Submit" />
</div>
</form >
Run Code Online (Sandbox Code Playgroud) 这个问题是面向服务器的.我有一个托管服务器(相当小的一个,1,6Ghz原子,2Go,200 GO),有几个(4或5)播放应用程序和更多.这些应用程序中的大多数都有一个非常小的用途,比方说每天一百个请求.
使用Play的嵌入式服务器部署每个应用程序是否更好!因此每个应用程序使用64mb的内存?
或者使用tomcat中的所有应用程序部署Tomcat?所有应用程序共享更大的内存?
编辑:
我将添加一些关于我的情况的进一步信息.服务器还托管:
我最初的计划是在Tomcat中部署所有这些东西.拥有应用程序,Sonar和Jenkins在Tomcat和Apache2上运行静态资源.(图片,脚本)
评论
最后一点,我知道拥有Sonar和Jenkins,生产环境中的持续集成系统并不是最佳选择.但由于它们仅在夜间运行(自动构建),因此它们不会使系统过载.另外,我是一名学生,在经济上,额外的"CI /构建"服务器是我的财务能力之外的.
我正在尝试使用XGBoost技术进行预测.由于我的因变量是连续的,我使用XGBoost进行回归,但是各种门户中可用的大多数参考都是用于分类.虽然我知道通过使用
objective = "reg:linear"
Run Code Online (Sandbox Code Playgroud)
我们可以进行回归,但我仍然需要对其他参数进行一些清晰度.如果有人可以提供R片段,这将是一个很大的帮助.
我想编写一个通用的序列化库,它提供了一个通用的save函数.该库包含自定义类型特征,例如some_condition:
template <typename T>
struct some_condition
{
constexpr static bool value = std::is_same<std::string, T>::value ||std::is_arithmetic<T>::value ;
};
Run Code Online (Sandbox Code Playgroud)
save的行为选择基于some_condition:
template <typename T>
std::enable_if_t<some_condition<T>::value> save(const T& value)
{
std::cout << "these types will be handled in a specific way: " << value << std::endl;
}
template <typename T>
std::enable_if_t<!some_condition<T>::value> save(const T& value)
{
std::cout << "these types will be handled in another way: " << value << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
save应该可以为用户数据类型进行自定义,不仅可以通过重载,还可以通过特征进行自定义.因此我创建了trait_extension哪些可以专门用于特征模板:
template <template<typename> …Run Code Online (Sandbox Code Playgroud) 是否可以在Qt Creator中进行后期构建事件(如在VC++中)?特别是,我想在构建后将可执行文件复制到另一个文件夹.可以吗?
我有以下问题.我需要计算一组的排列; 但是,该集合可能包含两个相同的元素,因此会导致重复的排列.例如:
给定集合[ 0 0 1 2 ],排列包括这些可能性:
1 2 0 0
1 2 0 0
Run Code Online (Sandbox Code Playgroud)
但是,我想避免像这些相同的排列.在MATLAB中,我可以简单地这样做:
unique(perms([ 0 0 1 2 ]), 'rows')
Run Code Online (Sandbox Code Playgroud)
但这里的问题是效率 - 我在一个巨大的for循环中反复这样做,并且所需的排序unique太慢了.所以我的问题是:我可以直接计算这种性质的独特排列,而不必在事后循环结果吗?我在MATLAB工作,但只是一个通用的解决方案可能会有所帮助,虽然可以在MATLAB中矢量化的东西可能是理想的!
据我所知,现有的问题并不能完全解决这个问题,但如果以前已经回答了这个问题,我会道歉.
我正在尝试使用CMake为Windows 10生成Visual Studio 15项目c ++静态库.它应该可以在手机上使用,所以我认为它应该支持Windows应用商店.我可以设置任何标志吗?
我发现https://github.com/Microsoft/CMake,它是微软的CMake的分支,但我找不到如何使用它来启用uniwersal app支持的线索.
使用"正常"cmake当我打开对windows stope的支持时,我得到一个错误:
错误MSB3843:项目"project1"以平台"Windows"为目标,但引用了针对平台"UAP"的SDK"Visual C++ 2015 Runtime for Universal Windows Platform Apps v14.0".
首先,我将快速描述我对此的动机和实际问题:
我经常处理大批量文件,更具体地说,我发现自己必须按照以下规则重命名:
它们可能都包含单词和数字,但仅限于一组数字正在递增而不是"常量".我需要提取那些只有那些数字并相应地重命名文件.例如:
Foo_1_Bar_2015.jpg
Foo_2_Bar_2015.jpg
Foo_03_Bar_2015.jpg
Foo_4_Bar_2015.jpg
Run Code Online (Sandbox Code Playgroud)
将被重命名:
1.jpg
2.jpg
3.jpg or 03.jpg (The leading zero can stay or go)
4.jpg
Run Code Online (Sandbox Code Playgroud)
所以我们开始的是一个带有std::wstring对象的向量,用于指定目录中的所有文件名.我敦促你停止阅读3分钟,并在继续我的尝试和问题之前考虑如何处理这个问题.我不希望我的想法在一个方向或另一个方向推动你,我总是发现新的想法是最好的.
现在,我有两种方法可以想到:
1)旧式C字符串操作和比较:
在我看来,这需要解析每个文件名并记住每个数字序列的位置和长度.这很容易存储在矢量中,或者存储在每个文件中.这很好用(基本上使用字符串搜索增加偏移量):
while((offset = filename_.find_first_of(L"0123456789", offset)) != filename.npos)
{
size = filename.find_first_not_of(L"0123456789", offset) - offset;
digit_locations_vec.emplace_back(offset, size);
offset += size;
}
Run Code Online (Sandbox Code Playgroud)
之后我所拥有的是(位置,大小)对的向量,用于文件名中的所有数字,常量(通过使用动机中的定义)与否.
在此之后,随之而来的是混乱,因为您需要交叉引用字符串并找出需要提取的数字.这将随着文件数量(往往是巨大的)而呈指数增长,而不是提到每个字符串中的数字序列数.此外,不是非常易读,可维护或优雅.不行.
2)正则表达式
如果有正则表达式的使用,那就是这个.从第一个文件名中创建一个正则表达式对象,并尝试将其与下一个文件名匹配.成功?即时提取所需数量的能力.失败?添加有问题的文件名作为新的正则表达式对象,并尝试匹配现有的两个正则表达式.冲洗并重复.正则表达式看起来像这样:
Foo_(\d+)_Bar_(\d+).jpg
Run Code Online (Sandbox Code Playgroud)
或分别为每个数字序列创建一个正则表达式:
Foo_(\d+)_Bar_2015.jpg
Foo_1_Bar_(\d+).jpg
Run Code Online (Sandbox Code Playgroud)
其余的是蛋糕.随便继续匹配,在最好的情况下,它可能只需要一次通过!问题是......
我需要知道的是:
1)你能想到任何其他优越的方法来实现这一目标吗?几天来,我一直在撞墙.
2)尽管在第一种方法中字符串操作和矢量构造\破坏的成本可能很大,但与正则表达式对象的成本相比,它可能相形见绌.第二种方法,最坏的情况:与文件一样多的正则表达式对象.对于潜在的数千个文件,这会是灾难性的吗?
3)第二种方法可以根据两种可能性中的一种进行调整:很少有std::regex对象构造,很多regex_match调用或者反过来.哪个更昂贵,正则表达式对象的构造或尝试匹配字符串?
c++ ×4
assembly ×1
boosting ×1
c++14 ×1
clang ×1
deployment ×1
django ×1
django-views ×1
filenames ×1
gbm ×1
gcc ×1
math ×1
matlab ×1
permutation ×1
python ×1
qt-creator ×1
r ×1
regex ×1
scraper ×1
string ×1
templates ×1
terminology ×1
tomcat ×1
type-traits ×1
web-crawler ×1
windows-10 ×1
xgboost ×1