我一直在研究遗传算法,我以前一直在使用g ++ 4.8.1编译参数
CCFLAGS=-c -Wall -Ofast -fopenmp -mfpmath=sse -march=native -std=gnu++11
Run Code Online (Sandbox Code Playgroud)
我没有使用c ++ 11的许多功能,并且有一个合理的分析系统,所以我替换了3-4行代码并让它编译而没有-std = gnu ++ 11
CCFLAGS=-c -Wall -Ofast -fopenmp -mfpmath=sse -march=native
Run Code Online (Sandbox Code Playgroud)
当我再次运行我的探查器时,我注意到除了我的排序功能之外,我几乎可以在任何地方看到约5%的性能提升,现在排序大约是两倍.(它是一个重载的运算符<在对象上)
我的问题是:
这两个版本之间存在哪些性能差异,并且预计c ++ 11在较新的编译器中会更快?
我也期待我正在使用的事实--Ofast正在扮演一个角色,我的假设是正确的吗?
更新:
正如评论中所建议的那样,我使用with和without -march = native再次运行测试
// Fast sort, slightly slower in other tests
CCFLAGS=-c -Wall -Ofast -fopenmp -mfpmath=sse -march=native -std=gnu++11
// Fast sort, slower in other tests
CCFLAGS=-c -Wall -Ofast -fopenmp -mfpmath=sse -std=gnu++11
// Slow sort, slower in other tests
CCFLAGS=-c -Wall -Ofast -fopenmp -mfpmath=sse
// Slow sort, fastest in other …
Run Code Online (Sandbox Code Playgroud) 我的代码中有一个块,其中for循环应该根据条件向前或向后运行.
if (forwards) {
for (unsigned x = 0; x < something.size(); x++ ) {
// Lots of code
}
} else {
for (unsigned x = something.size()-1 ; x >= 0 ; x-- ) {
// Lots of code
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一个很好的方法来设置它,所以我不重复两次for循环中的所有代码?
有问题的'东西'是std :: vector <>,所以也许它可以用迭代器?(我没有使用C++ 11)
我正在使用Django Rest Framework,并且我希望能够在返回单个对象时向序列化程序添加额外的细节,这将被排除在列表视图之外.
在下面的代码中,我将celery_state字段添加到TestModelSerializer,但我只想在返回单个对象时添加此字段,而不是在返回TestModel数据列表时添加.
我查看了list_serializer_class选项,但它似乎只是使用原始模型序列化程序,因此即使我尝试从那里排除,它仍将始终包含该字段.
我有什么选择?
class TestModelSerializer(serializers.HyperlinkedModelSerializer):
celery_state = serializers.CharField(source='celery_state', read_only=True)
class Meta:
model = TestModel
class TestModelViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows TestModels to be viewed or edited.
"""
authentication_classes = (SessionAuthentication, BasicAuthentication)
permission_classes = (IsAuthenticatedOrReadOnly,)
queryset = TestModel.objects.all()
serializer_class = TestModelSerializer
Run Code Online (Sandbox Code Playgroud) 我想在我的代码中的几个地方开始使用枚举,但是我对编译器的先前声明有一个问题.目前声明枚举的方式对我来说最有意义:
避免这种情况的最佳方法是什么?
enum score_methods_t {NONE,ABS_FROM_PERFECT,ERROR_SQUARED};
enum scale_methods_t {NONE,CASES_MULTIPLIER,RANGE_MULTIPLIER};
Run Code Online (Sandbox Code Playgroud)
我应该只使用命名空间使一切都是唯一的或范围吗?我想在类中使用枚举类型,NONE是最具描述性的名称!
枚举冲突的原因也是因为基本上只是#defines引擎盖?
我正在使用一些命令输出,它作为Ruby哈希的字符串返回.(来自mcollective的东西).
这是我收到的示例字符串:
{:changes=>{"total"=>0}, :events=>{"failure"=>0, "success"=>0, "total"=>0}, :version=> {"puppet"=>"2.7.21 (Puppet Enterprise 2.8.1)", "config"=>1381497648}, :time=> {"filebucket"=>0.000287, "cron"=>0.00212, "package"=>0.398982, "exec"=>0.001314, "config_retrieval"=>5.60761618614197, "anchor"=>0.001157, "service"=>0.774906, "total"=>9.85111718614197, "host"=>0.002662, "user"=>0.063606, "file"=>2.998467, "last_run"=>1381497660}, :resources=> {"skipped"=>6, "failed_to_restart"=>0, "out_of_sync"=>0, "failed"=>0, "total"=>112, "restarted"=>0, "scheduled"=>0, "changed"=>0}}
Run Code Online (Sandbox Code Playgroud)
我有能力为此编写一个迷你解析器,但这将是一个繁琐的任务.有谁知道一个库或代码片段可以将我转换为Python字典?
如果您认为我应该解析它,欢迎任何提示.
我正在使用python请求模块对站点进行一些测试.
请求模块允许您通过传入键设置为无的字典来删除某些标头.例如
headers = {u'User-Agent': None}
Run Code Online (Sandbox Code Playgroud)
将确保没有用户代理与请求一起发送.
但是,当我发布数据时,请求将为我计算正确的Content-Length,即使我指定None或不正确的值.例如.
headers = {u'Content-Length': u'999'}
headers = {u'Content-Length': None}
Run Code Online (Sandbox Code Playgroud)
我检查请求中使用的头文件的响应(response.request.headers),我可以看到Content-Length已经重新添加了正确的值.到目前为止,我看不到任何方法来禁用此行为
CaseInsensitiveDict({'Content-Length': '39', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept-Encoding': 'gzip, deflate, compress', 'Accept': '*/*', 'User-Agent': 'python-requests/2.2.1 CPython/2.7.6 Linux/3.13.0-36-generic'})
Run Code Online (Sandbox Code Playgroud)
我真的很想继续使用请求模块来做这件事.这可能吗?
我正在构建一个链接一些共享库的程序.它们包含在相对于我的项目的lib /目录中.
我遇到的问题是,我希望可执行文件知道在相对../lib目录中搜索库.这可能吗?
我真的不想更改ld_library_path或将文件移动到根拥有的标准路径之一.
当.so文件位于strace/ldd所示的标准路径之一时,我能够编译可执行文件并运行它
我希望编译器能为你带来魔力,但是,以下两个代码块之间是否存在任何性能差异?
if (! something.isTrue) {
pathFalseFunc();
} else {
pathTrueFunc();
}
Run Code Online (Sandbox Code Playgroud)
和
if (something.isTrue) {
pathTrueFunc();
} else {
pathFalseFunc();
}
Run Code Online (Sandbox Code Playgroud)