草庐IT

performing

全部标签

performance - 写入操作成本

我有一个将字符串写入文件的Go程序。我有一个迭代20000次的循环,在每次迭代中我将大约20-30个字符串写入文件。我只是想知道将它写入文件的最佳方式是什么。方法1:在代码开头保持打开文件指针,并为每个字符串写它。它使它成为20000*30次写入操作。方法二:使用bytes.Buffer去把所有的东西都存到缓冲区里并且把它写在最后。在这种情况下,文件指针也应该是从代码开头或代码末尾打开。做重要吗?我假设方法2应该更有效。有人可以证实这一点吗?一次写作如何比定期写作更好。因为文件指针无论如何都会打开。我正在使用f.WriteString()和buffer.WriteString()缓冲区

performance - 在 golang 中,使用 make 与 {} 初始化的 map 之间是否存在任何性能差异

我们知道有两种初始化map的方法(如下所列)。我想知道这两种方法之间是否存在任何性能差异。varmyMapmap[string]int然后myMap=map[string]int{}对比myMap=make(map[string]int) 最佳答案 在我的机器上,它们看起来差不多。您可以轻松地进行基准测试进行比较。例如:packagebenchimport"testing"varresultmap[string]intfuncBenchmarkMakeLiteral(b*testing.B){varmmap[string]intfo

performance - Go 语言指针性能

以下代码显示了两个基准。第一个在每次迭代中按值创建一个结构,而第二个确实使用指向该结构的指针。为什么后者慢20倍??我知道GoLang的GC问题,但逃逸分析不应该处理这些情况吗?我使用的是go1.4beta1,但1.3.3给了我[相同-错误]不同的结果。有什么想法吗?packagemainimport"testing"typeAdderstruct{vals[]int}func(a*Adder)add()int{returna.vals[0]+a.vals[1]}funcBenchmarkWithoutPointer(b*testing.B){accum:=0fori:=0;i基准go

performance - 在golang中解析日期和时间的最佳方式

我有很多日期时间值作为字符串传入我的golang程序。格式固定为位数:2006/01/0215:04:05我开始用time.Parse解析这些日期功能constdtFormat="2006/01/0215:04:05"funcParseDate1(strdatestring)(time.Time,error){returntime.Parse(dtFormat,strdate)}但是我的程序有一些性能问题。因此,考虑到我的格式有点固定,我尝试通过编写自己的解析函数来调整它:funcParseDate2(strdatestring)(time.Time,error){year,_:=st

performance - 如何解释 pprof 输出?

我正在尝试分析一个用go编写的应用程序,它显然使用了大约256个虚拟内存(使用psaux检查)。我正在尝试使用pprof打包并查看哪些函数分配/消耗了大部分内存,但结果对我来说毫无意义。pproftop似乎只列出了运行时函数。谁能帮我理解这些数据?psaux|grepandroidroot45843.40.150024429536pts/1Sl+17:210:38./android-logtostderr转到工具pprofhttp://localhost:6060/debug/pprof/heap/pprof.localhost:6060.inuse_objects.inuse_spa

performance - append 到 slice 糟糕的性能.. 为什么?

我目前正在使用GoLang创建游戏。我正在测量FPS。我注意到使用for循环append到slice时会损失7fps,如下所示:vertexInfo:=Opengl.OpenGLVertexInfo{}fori:=0;i我正在为每个Sprite、每次绘制都这样做。问题是,为什么我只循环多次并将相同的东西append到这些slice中,性能就会受到如此巨大的影响?有没有更有效的方法来做到这一点?这不像我在添加大量数据。每个slice包含大约16个元素,如上所示(4x4)。当我简单地将所有16个元素放在一个[]float32{1..16}中时,fps提高了大约4。更新:我对每个追加进行了基

performance - Go语言中通用类型(int/uint)相对于特定类型(int64/uint64)有什么优势?

我知道int和uint是64位有符号/无符号整数-就像int64/uint64一样。而且我也明白int不仅仅是int64的别名(就像byte->uint8是),因此int64需要转换为int,反之亦然。但是,使用一个比另一个有什么好处?使用通用类型是否会降低运行时性能?很抱歉,如果这是一个常见问题-我已经用Google搜索了答案(也在这里搜索过),因为我认为其他人之前可能会突然出现,但没有找到任何人回答这个问题的方式影响性能(如果有的话)、内存使用(如果它们都是64位整数,我猜不会?)以及编译器如何处理它们。编辑:我知道int/unit在32位架构上是32位的。为了简洁和同类比较,我假

performance - 可变参数函数在 Go 中导致不必要的堆分配

我目前正在使用Go编写一些对性能敏感的代码。有一次我有一个特别紧密的内部循环,它连续做三件事:获得数个指向数据的指针。如果发生罕见错误,这些指针中的一个或多个可能为nil。检查是否发生此错误,如果发生则记录错误。使用存储在指针中的数据。下面显示的是一个具有相同结构的玩具程序(尽管指针实际上永远不会为nil)。packagemainimport("math/rand""fmt")constBigScaryNumber=1当我在我的机器上运行它时,我得到以下信息:$gobuildalloc.go&&time./allocreal0m5.466suser0m5.458ssys0m0.015s

git - 如何运行版本 :perform from a given Git tag?

由于Nexus临时存储库的问题,我需要重新运行mvnrelease:perform,最好不要创建新的Git标签,而是重新使用第一次运行时创建的标签。我试过了mvnrelease:perform-DconnectionUrl=scm:git:git@github.com:ops4j/org.ops4j.pax.exam2.git-Dtag=exam-reactor-3.3.0和mvnrelease:perform-DconnectionUrl=scm:git:git@github.com:ops4j/org.ops4j.pax.exam2.git-Dscm.tag=exam-reacto

performance - git 与 mercurial 性能对比

是否存在任何性能基准?我希望创建一个存储库并提交/推送运行数个深度的遗留代码。是不是更快/占地面积等?如果这太含糊,我深表歉意...... 最佳答案 您不会因为性能而在git和mercurial之间做出选择。他们都很好。只做您会做的事情并进行衡量。您可能会在第一次导入时获得最大的性能变化——这无关紧要。继续挖掘。就空间而言,git肯定会胜出的一个地方是,如果您在其生命周期中的许多不同路径中拥有相同的内容。也就是说,如果您移动了数GB的文件。git的模型比hg的支持更好。这对您来说可能无关紧要。在这两种情况下,您都应该考虑您的几千兆存