Python(Django)中基于Django查询集创建JSON的最快方法是什么.请注意,在此处提议的模板中解析它不是一个选项.
背景是我创建了一个循环遍历树中所有节点的方法,但在转换大约300个节点时已经非常慢.我想到的第一个(也可能是最糟糕的)想法是以某种方式"手动"创建json.请参阅下面的代码.
#! Solution 1 !!#
def quoteStr(input):
return "\"" + smart_str(smart_unicode(input)) + "\""
def createJSONTreeDump(user, node, root=False, lastChild=False):
q = "\""
#open tag for object
json = str("\n" + indent + "{" +
quoteStr("name") + ": " + quoteStr(node.name) + ",\n" +
quoteStr("id") + ": " + quoteStr(node.pk) + ",\n" +
)
childrenTag = "children"
children = node.get_children()
if children.count() > 0 :
#create children array opening tag
json += str(indent + quoteStr(childrenTag) + ": [")
#for …Run Code Online (Sandbox Code Playgroud) 在分析C#应用程序时,我发现在称为"ThePreStub"的系统(?)方法中有相当大的CPU使用率.这是什么?
我正在尝试使用clang来描述我正在进行的项目.该项目包括一个相当大的静态库,它作为依赖项包含在Xcode中.
我真的很想不要分析依赖项的文件,因为它似乎让clang失败了.这可能吗?我一直在阅读clang文档,但我还没有找到它.
目前我正在使用Java代理来组装内存统计信息.在instrumentation API的帮助下,我可以获得类(并操纵它们).使用普通Java,我可以估计每个对象使用的资源.到现在为止还挺好.
我现在面临的问题是"如何掌握特定类的每个Object实例".我可以进行字节代码操作以获取对象实例,但我希望有另一个我不知道的API,帮助我实现我的目标,没有这么大的侵入性步骤.最后,应将性能影响保持在最低限度.有任何想法吗?
我正在构建大量自动生成的代码,包括一个特别大的文件(~15K行),在linux上使用mingw32交叉编译器.大多数文件非常快,但是这个大文件需要很长时间(约15分钟)才能编译.
我试过操纵各种优化标志,看看它们是否有任何效果,没有任何运气.我真正需要的是一些确定g ++正在做什么的方法.是否有任何(相对简单的)方法让g ++生成关于不同编译阶段的输出,以帮助我缩小挂起的范围?
遗憾的是,我没有能力重建这个交叉编译器,因此不可能将调试信息添加到编译器并单步调试.
文件中有什么:
该文件是用于生成特定父类的大量不同特定子类的工厂.然而,大多数包括没有什么特别的花哨.
根据Neil Butterworth的建议,-ftime-report的结果表明,"生命分析"阶段需要921秒,占据了15分钟的大部分时间.
看起来这发生在数据流分析期间.文件本身是一堆条件字符串比较,按类名提供字符串构造对象.
我们认为将此更改为指向函数指针的名称映射可能会改善一些事情,因此我们将尝试这样做.
实际上,生成一堆工厂函数(每个对象)并从对象的字符串名称创建映射到指向其工厂函数的指针将编译时间从原来的15分钟缩短到大约25秒,这将节省每个人的大量时间在他们的构建上.
再次感谢Neil Butterworth关于-ftime-report的提示.
我是第一次在NetBeans中查看分析器,今天早上我注意到我通过Monitor分析器显示了超过1700个幸存的代,但是堆大小不变.在做一些阅读时,我发现这篇文章讨论了如何使用NetBeans探查器来发现泄漏.
因此,在关注文章建议后,我开始了一个内存分析器.在查看结果时,我发现char []占了大多数幸存的世代.目前,在这篇文章中,char []已经22代了.
现在一些帖子(OldCurmudgeon在底部附近评论)表明,如果我的堆稳定,没有泄漏,而其他人说,如果世代继续增长,那么.所以我有点困惑,哪个是对的.
所以,我的问题是:
根据以下屏幕截图,我应该进一步研究潜在的内存泄漏吗?
内存(堆)
存储器(GC)
实时分配的对象
我一直在研究遗传算法,我以前一直在使用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) 我正在尝试按照此处列出的说明重新安装我的Haskell库并启用性能分析
但是,每当cabal尝试重新安装其中一个库时,我都会收到以下消息:
LibraryNameHere.hs:1:1:
Could not find module `Prelude'
Perhaps you haven't installed the profiling libraries for package `base'?
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)
当我尝试重新base启动并启用性能分析时,我收到以下消息:
me@machine:~/.cabal/$ cabal install -p base
Resolving dependencies...
All the requested packages are already installed:
base-4.5.0.0
Use --reinstall if you want to reinstall anyway.
me@machine:~/.cabal/$ cabal install --reinstall -p base
Resolving dependencies...
cabal: Could not resolve dependencies:
next goal: base (user goal)
rejecting: base-4.7.0.0, 4.6.0.1, 4.6.0.0, 4.5.1.0, …Run Code Online (Sandbox Code Playgroud) 如何使用iPython%time或%% timeit magic命令计时执行Python脚本?例如,我有script.py,我想知道执行需要多长时间.细微差别:script.py需要输入参数.以下似乎不起作用.
%%time script.py input_param1 input_param2
Run Code Online (Sandbox Code Playgroud) 我在SSE 4.2和AVX 2的2个向量之间矢量化了点积,如下所示.该代码使用GCC 4.8.4和-O2优化标志进行编译.正如预期的那样,两者的性能都有所提高(和AVX 2比SSE 4.2快),但是当我用PAPI分析代码时,我发现未命中的总数(主要是L1和L2)增加了很多:
没有矢量化:
PAPI_L1_TCM: 784,112,091
PAPI_L2_TCM: 195,315,365
PAPI_L3_TCM: 79,362
Run Code Online (Sandbox Code Playgroud)
使用SSE 4.2:
PAPI_L1_TCM: 1,024,234,171
PAPI_L2_TCM: 311,541,918
PAPI_L3_TCM: 68,842
Run Code Online (Sandbox Code Playgroud)
使用AVX 2:
PAPI_L1_TCM: 2,719,959,741
PAPI_L2_TCM: 1,459,375,105
PAPI_L3_TCM: 108,140
Run Code Online (Sandbox Code Playgroud)
我的代码可能有问题或者这种行为是否正常?
AVX 2代码:
double vec_dotProduct(const vec& vecs, const unsigned int& start_a, const unsigned int& start_b, const int& n) {
double dot = 0;
register int i = 0;
const int loopBound = n-3;
__m256d vsum, vecPi, vecCi, vecQCi;
vsum = _mm256_set1_pd(0);
double * const pA = vecs.x+start_a ;
double * const …Run Code Online (Sandbox Code Playgroud)