小编m.s*_*.s.的帖子

如何从GCC /铿锵声组件输出中消除"噪音"?

我想检查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)

c++ assembly gcc clang

56
推荐指数
3
解决办法
1万
查看次数

匹配查询不存在Django中的错误

我在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)

python django django-templates django-models django-views

54
推荐指数
3
解决办法
9万
查看次数

爬虫与刮刀

有人可以在范围和功能方面区分爬虫和刮刀.

terminology web-crawler scraper

53
推荐指数
3
解决办法
3万
查看次数

PlayFramework应用程序的最佳部署策略?

这个问题是面向服务器的.我有一个托管服务器(相当小的一个,1,6Ghz原子,2Go,200 GO),有几个(4或5)播放应用程序和更多.这些应用程序中的大多数都有一个非常小的用途,比方说每天一百个请求.

  1. 使用Play的嵌入式服务器部署每个应用程序是否更好!因此每个应用程序使用64mb的内存?

  2. 或者使用tomcat中的所有应用程序部署Tomcat?所有应用程序共享更大的内存?

编辑:

我将添加一些关于我的情况的进一步信息.服务器还托管:

  • 关于Apache2的大约10,15个PHP网站
  • 通过Apache mod_dav_svn的SVN服务器
  • 用于声纳的雄猫
  • Jenkins的独立安装(通过Jetty)

我最初的计划是在Tomcat中部署所有这些东西.拥有应用程序,Sonar和Jenkins在Tomcat和Apache2上运行静态资源.(图片,脚本)

评论

最后一点,我知道拥有Sonar和Jenkins,生产环境中的持续集成系统并不是最佳选择.但由于它们仅在夜间运行(自动构建),因此它们不会使系统过载.另外,我是一名学生,在经济上,额外的"CI /构建"服务器是我的财务能力之外的.

deployment tomcat playframework

18
推荐指数
2
解决办法
5581
查看次数

如何在R中使用XGBoost算法进行回归?

我正在尝试使用XGBoost技术进行预测.由于我的因变量是连续的,我使用XGBoost进行回归,但是各种门户中可用的大多数参考都是用于分类.虽然我知道通过使用

objective = "reg:linear"
Run Code Online (Sandbox Code Playgroud)

我们可以进行回归,但我仍然需要对其他参数进行一些清晰度.如果有人可以提供R片段​​,这将是一个很大的帮助.

r machine-learning gbm boosting xgboost

13
推荐指数
1
解决办法
3万
查看次数

C++中的可扩展类型特征

我想编写一个通用的序列化库,它提供了一个通用的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)

c++ templates type-traits c++14

12
推荐指数
1
解决办法
1119
查看次数

在Qt Creator中构建后事件?

是否可以在Qt Creator中进行后期构建事件(如在VC++中)?特别是,我想在构建后将可执行文件复制到另一个文件夹.可以吗?

qt-creator

10
推荐指数
2
解决办法
5960
查看次数

有效地寻找独特的排列

我有以下问题.我需要计算一组的排列; 但是,该集合可能包含两个相同的元素,因此会导致重复的排列.例如:

给定集合[ 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中矢量化的东西可能是理想的!

据我所知,现有的问题并不能完全解决这个问题,但如果以前已经回答了这个问题,我会道歉.

math matlab permutation combinatorics

10
推荐指数
1
解决办法
7503
查看次数

我如何使用CMake生成Windows 10通用项目

我正在尝试使用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".

c++ windows-10 visual-studio-2015 windows-10-mobile

10
推荐指数
1
解决办法
7122
查看次数

查找文件名中的数字并与其他人交叉引用它们

首先,我将快速描述我对此的动机和实际问题:
我经常处理大批量文件,更具体地说,我发现自己必须按照以下规则重命名:
它们可能都包含单词和数字,但仅限于一组数字正在递增而不是"常量".我需要提取那些只有那些数字并相应地重命名文件.例如:

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++ regex string filenames

9
推荐指数
1
解决办法
236
查看次数