草庐IT

page-performance

全部标签

go - http.FileServer 正在发送 "404 page not found"

我正在尝试通过http.FileServer提供静态文件,但它永远不会发回我要求的目录。代码被截断如下:funcmain(){fmt.Println("ServingFiles")http.HandleFunc("/",homeFunc)http.HandleFunc("/search",searchFunc)http.Handle("/tmp/",http.StripPrefix("/tmp/",http.FileServer(http.Dir("/assets"))))http.ListenAndServe(":8080",nil)}访问mywebsite.com/tmp/时,出现

postgresql - Revel 于 Gorm "undefined: Page"

我只是想用revel、gorm和pq创建新项目。我在app/models中有模型Page:packagemodelsimport("time")typePagestruct{Idint64Titlestring`sql:"size:255"`ContextstringUrlstringMetaKeysstringMetaDescrstringCreatedAttime.TimeUpdatedAttime.TimeDeletedAttime.Time}和gorm.go在app/controllers中:packagecontrollersimport(_"myapp/app/models

unit-testing - 戈朗 : how to generate a net/http timeout Error to perform unit test

我得到了一段如下代码:iftimeoutErr,ok:=err.(net.Error);ok&&timeoutErr.Timeout(){//Somecodethatneedtotest}我怎样才能生成可以匹配此处条件的错误,以便代码通过if。 最佳答案 Error是一个接口(interface):typeErrorinterface{errorTimeout()bool//Istheerroratimeout?Temporary()bool//Istheerrortemporary?}要实现它,您需要执行以下操作(未经测试):ty

javascript - 戈朗 : html pages and GO communication

除了模板之外,还有其他方法可以在Go和html页面之间进行通信吗?使用类似postmessages的东西?场景::-->StreamingTwitterApi流式api调用,在可用时更新新内容;想要用最新的内容更新网页,保持原有内容不变。想避免使用NaCl...因为它只适用于Chrome 最佳答案 您可以使用网络套接字(WebSocket@Wikipedia)。这里有两个实现:golang.org/x/net/websocketgithub.com/gorilla/websocket这里是其他websocket包/实现的详尽列表:g

performance - 在 Go 中以 GMP 风格的性能处理大量数据

我正在学习Go,并开始使用math/big包来处理任意长度的整数。我编写了这个计算第n个斐波那契数的程序:(删除了imports):funcmain(){imax,_:=strconv.Atoi(os.Args[1])vara,b,cbig.Inta.SetUint64(0)b.SetUint64(1)fori:=0;i这是C程序的代码:intmain(intargc,char**argv){intimax=atoi(argv[1]);mpz_ta,b,c;mpz_inits(a,b,c,NULL);mpz_set_ui(a,0);mpz_set_ui(b,1);inti=0;for(

performance - Bigquery.go 导出作业比 WebGUI 慢得多

我正在使用bigquery.go库。在调查某些性能时,我发现从客户端启动的导出(.csv到GCS)作业(和仅导出作业)平均需要大约60秒,而从WebGUI启动的相同作业大约需要20秒。这可能是什么原因?代码如下:time1:=time.Now()job_extract,err:=extractor.Run(ctx)iferr!=nil{returnerr}status,err=job_extract.Wait(ctx)iferr!=nil{returnerr}ifstatus.Err()!=nil{log.Fatalf("Jobfailedwitherror%v",status.Err

performance - 如何在多核机器上扩展 Go 例程的数量以获得最大吞吐量

在多核机器上运行,我有一堆go例程在channel上等待CPU密集型任务。为了达到#tasks/second的最大吞吐量,我应该使用的Go例程的最佳数量是多少。它应该等于核心数还是与核心数成正比,还是其他什么? 最佳答案 我认为您缺少goroutines的一点,它们不是OS线程,您不应该关心它们的数量(直到您达到大约一百万个goroutines)。减少或增加它们几乎不会改变性能,因为Go运行时将负责在真实操作系统线程上调度它们。真实操作系统线程数由GOMAXPROCS控制(您可以通过编程或将其设置为环境变量)。它默认为您机器上的内核

performance - 转到HTTP服务器性能问题

我正在写一个事件收集器http服务器,它将承受沉重的负担。因此,在http处理程序中,我只是反序列化事件,然后在goroutine中的http请求-响应周期之外运行实际的处理。这样,我看到如果我以每秒400个请求的速度命中服务器,那么对于99%的延迟,其延迟将低于20ms。但是,一旦我将请求速率提高到每秒500个,延迟就会超过800毫秒。任何人都可以请我提供一些有关原因的一些想法,以便我可以进行更多探索。packagecontrollerimport("net/http""encoding/json""event-server/service""time")funcCollectEve

performance - 返回指向 uint 或 uint 的指针哪个更有效?

在Go中,从函数返回哪个更有效:返回uint还是返回*uint?该函数在cpu密集型库的内部for循环中调用。 最佳答案 一般来说,只要效率是个问题,您就应该运行基准测试。让我们创建非常简单的示例:funcfuint()uint{return0}funcfpuint()*uint{variuintreturn&i}以及基准测试代码:funcBenchmarkUint(b*testing.B){fori:=0;i需要注意的一件事:由于我们的函数非常简单,代码优化可能会使结果变得无用(例如,我们可能会看到相同的结果)。因此,我们应该通过

performance - gRPC 服务器在以太网上的响应时间长

我正在使用用C#编写的gRPC客户端和一堆服务器(用c++、C#、rust和go编写)测试客户端-服务器连接。当我在本地测试它时,一切正常(平均GO响应大约0.12毫秒)但是当我通过本地网络测试它时,它变得非常慢,就像非常慢一样。每个请求的平均时间达到40毫秒!需要说明的是:我使用的是一个简单的HelloWorld原型(prototype),连接可能最简单。其他服务器每次请求大约需要1毫秒,但Go-大约40毫秒。我的Go服务器代码:packagemainimport("context"pb"descriptions""log""net""google.golang.org/grpc")