草庐IT

perform_calc

全部标签

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")

performance - 没有外部依赖的高性能网络蜘蛛

我正在尝试用Golang编写我的第一个网络蜘蛛。它的任务是从提供的数据库查询中抓取域(并检查它们的html)。这个想法是没有第3方依赖项(例如消息队列),或者尽可能少,但它的性能必须足以每天抓取500万个域。我每个月需要检查大约1.5亿个域。下面是非常基本的版本-它在“无限循环”中运行,因为理论上爬行过程是无止境的。funccrawl(ntime.Duration){varwgsync.WaitGroupruntime.GOMAXPROCS(runtime.NumCPU())for_=rangetime.Tick(n*time.Second){wg.Add(1)gofunc(){def

performance - 如何使用 Go 限制下载速度?

我目前正在使用Go开发一个下载服务器。我需要将用户的下载速度限制为100KB/s。这是我的代码:funcserveFile(whttp.ResponseWriter,r*http.Request){fileID:=r.URL.Query().Get("fileID")iflen(fileID)!=0{w.Header().Set("Content-Disposition","attachment;filename=filename.txt")w.Header().Set("Content-Type",r.Header.Get("Content-Type"))w.Header().Set

performance - Go http 服务器基准测试性能慢

我试图找出go网络服务器的最大吞吐量。我在一台8核机器(IntelXeon2.5Mhz)上运行simplewebserver并在另一台8核机器上运行wrk工具。Iperf命令显示这些机器之间大约有8-10Gbps。最初,我犯了一个错误,使用每秒仅提供16k请求的apacheab工具。问题与link相同.现在,当我切换到wrk工具时,我每秒收到大约90k个请求,大约11MB/秒。在第一个8核机器上,我运行了simplewebserver.gopackagemainimport("io""net/http""runtime")funchello(whttp.ResponseWriter,r

performance - 将 MeiYan 哈希函数移植到 Go

我想将一个最先进的哈希函数MeiYan从C移植到Go。(据我所知,就速度和冲突率而言,这是最好的哈希表哈希函数之一,如果不是最好的话,它至少胜过MurMur。)我是Go的新手,刚用了一个周末,就想出了这个版本:funcmeiyan(key*byte,countint)uint32{typeP*uint32;varhuint32=0x811c9dc5;for;count>=8;{a:=((*(*uint32)(unsafe.Pointer(key)))>27)c:=*(*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(key))+4))h=(h

performance - 我如何在 Go 中编写基准测试脚本来测量 ops/sec

我正在通过编写一个简单的Redis克隆来练习我的Golang。我如何编写一个基准测试脚本来在C并发级别每秒建立X个连接来处理我的服务器协议(protocol)并测量每秒有多少操作?我可以简单地编写一个实际执行此操作的脚本:fori:=range(1000){//Openconnection//Performcommand//Closeconnection}但我想知道每秒分配每个并发级别的连接数背后的概念。 最佳答案 这最好由内置的testing.Benchmark处理系统。例如,这样的测试用例:funcBenchmarkHello(

performance - 在 init 或处理函数中读取模板?

我正在为网站编写一个基本服务器。现在我面临一个(对我来说)困难的性能问题。是不是在init()函数中读取模板文件比较好?//Initializeallpagesofwebsitefuncinit(){indexPageData,err:=ioutil.ReadFile("./tpl/index.tpl")check(err)}还是在http.HandlerFunc中?funcindex(whttp.ResponseWriter,req*http.Request){indexPageData,err:=ioutil.ReadFile("./tpl/index.tpl")check(err

performance - 为什么这个 Go 代码的速度与 Python 的速度相当(而且快不了多少)?

我需要为超过1GB的文件计算sha256校验和(按block读取文件),目前我正在使用python:importhashlibimporttimestart_time=time.time()defsha256sum(filename="big.txt",block_size=2**13):sha=hashlib.sha256()withopen(filename,'rb')asf:forchunkiniter(lambda:f.read(block_size),b''):sha.update(chunk)returnsha.hexdigest()input_file='/tmp/1GB

performance - 代码顺序和性能

我想找出哪个更快:结构与数组。所以我写了一个GO代码,其中我将4个int值(1、2、3和4)写入一个结构的成员,然后写入一个长度为4的数组。我试图找出写入所需的时间。案例1:首先,我将值写入结构,然后写入数组。在这里我发现数组比结构更快。packagemainimport("fmt""time")typeabcstruct{a,b,c,dint}funcmain(){varobjabct1:=time.Now()obj.a=1obj.b=2obj.c=3obj.d=4t2:=time.Since(t1)fmt.Println("Structaccesstime::",t2)a:=mak

performance - 迄今为止的 CSV 和 float

我目前正在编写一个小程序,将CSV文件转换为用于进一步处理的结构。csv行看起来像这样20140102,09:30,38.88,38.88,38.82,38.85,67004我有500个文件,每个大约20-30MB。我的代码工作得很好,但我不禁想知道是否有比我现在正在做的更好的方法来转换这些文件。先读取文件并转为csv记录(伪代码)data,err:=ioutil.ReadFile(path)iferr!=nil{...}r:=csv.NewReader(bytes.NewReader(data))records,err:=r.ReadAll()iferr!=nil{...}然后遍历所