Go语言中文网 为您找到相关结果 61

golang和java的http性能对比

公司要重构一个统计项目,统计部分要提供一个web收数的接口,因为统计系统的日志量十分大,所以对web服务的性能要求很严格,在技术选择的背景下做了golang和java的性能对比. 测试环境: mac pro 13.4.0 golang: go version go1.3.1 darwin/amd64 java: 1.7.0_71, 基于tomcat容器 测试工具 apache Ab工具: http://httpd.apache.org/docs/2.2/programs/ab.html 测试流程 golang使用源生的net/http服务搭建http项目,接口输出hello world java使用servlet 搭建web项目,接口同样输出hello world ab工具使用 ab -c ...阅读全文

博文 2015-01-13 08:00:06 dandy

Go语言程序的状态监控

Go是很实在的编程语言,从一开始就提供了很详细的运行状态信息。产品上线后的调优和排查疑难杂症都得靠这些状态信息。这边总结一些我们项目里用到的状态监控手段。 pprof Go自带了一个pprof工具,这个工具可以做CPU和内存的profiling,官方的博客有一篇文章介绍用法:《Profiling Go Programs》 官方的文章讲了怎么用自带的pprof工具分析数据,但是获得分析数据的部分比较单一,我在很长一段时间一直误以为cpuprof和memprof必须在程序启动时打开,其实cpuprof和memprof是可以在线打开和关闭的。 并且pprof模块其实不只是cpuprof和memprof这两个功能,其中还提供了Lookup功能用于获取堆状态信息、线程状态信息、 goroutine状态...阅读全文

博文 2014-10-13 14:54:27 达达

高性能代理服务器Proxy-Go

Proxy 是 golang 实现的高性能 http,https,websocket,tcp 代理服务器,同时支持内网穿透。 ## Features - 链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理. - 通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征. - 智能HTTP代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理(前提是配置了上级代理)访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理. - 域名黑白名单,更加自由的控制网站的访问方式。 - 跨平台性,无论你是widows,linux,还是mac,甚至是树莓派...阅读全文

性能测试工具boom

Boom 是 google 一女工程师使用 Go 语言开发的类似 apache ab 的性能测试工具。相比 ab,boom跨平台性更好,而且更容易安装。 ##安装## `go get github.com/rakyll/boom` ##使用## ``` Usage: boom [options...] Options: -n Number of requests to run. -c Number of requests to run concurrently. Total number of requests cannot be smaller than the concurency level. -q Rate...阅读全文

开源项目 2014-10-31 07:42:35 rakyll

可视化系统监控工具 Cloudinsight Agent

![image](http://static.oschina.net/uploads/img/201610/18113759_OZtU.jpg) 很高兴地宣布 Cloudinsight  Agent 在 BSD 开源协议下正式开源了。我们的工程师在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎大家参与到  Cloudinsight Agent 的开发和迭代中来。 **为什么要用 Golang 重写和开源** [**Cloudinsight**](http://cloudinsight.oneapm.com/)**是一个可视化系统监控工具,能够对数据指标进行聚合、分组、过滤、 管理、计算;并提供团队协作功能,共同管理数据和报警事件。而这些的关键,正是 Cloudinsigh...阅读全文

md5与crc32性能对比

感觉MD5算法复杂度比crc32高很多,具体高多少呢?测试一下 // main.go package main import ( "crypto/md5" "fmt" "hash/crc32" ) func main() { data := []byte("test") fmt.Printf("%x", md5.Sum(data)) } func Crc32IEEE(data []byte) uint32 { return crc32.ChecksumIEEE(data) } func Md5(data []byte) [16]byte { return md5.Sum(data) } // main_test.go package main import "testing" func Be...阅读全文

博文 2017-02-09 08:09:02 李维

go实现高性能直播服务

livego go 实现直播服务 服务器部署 chmod 755 server.sh ./server.sh &(依赖go环境,有些情况需要用vim 打开 set ff=unix 然后:wq) 或者直接执行 ./LiveGoServer (不依赖go环境) 本地部署 直接执行 LiveGoServer.exe use 采用vue+webpack实现ui所有在config里日志在logs里http://localhost:8080/ (视频直播)http://localhost:8080/camera (录视频)(由于chrome的安全限制,建议在firefox下打开录视频页面) 使用效果 交流使用 交流群:337937322 项目地址:https://github.com/qieangel2...阅读全文

博文 2017-02-10 10:31:31 qieangel2013

对比C, java, go 递归计算fibonacci(40) 的性能

// fibonacci.c #include int main() { printf("%d", fibonacci(40)); } int fibonacci(int n) { if (n < 2) { return 1; } return fibonacci(n - 2) + fibonacci(n - 1); } 编译: CFLAGS="-march=corei7-avx -O2 -pipe" && gcc fibonacci.c 运行:time ./a.out 结果:165580141 real 0m0.977s user 0m0.975s sys 0m0.002s // Fibonacci.java public class Fibonacci { publi...阅读全文

博文 2014-10-04 19:26:30 ZhouJunhua

go语言/IDE/golang/go语言list和slice性能测试

go语言/IDE/golang/go语言list和slice性能测试 package main import ( l "container/list" "fmt" "time" ) var ( name = "viney" ) func list() { names := l.New() t := time.Now() for i := 1; i <= 1000000; i++ { _ = names.PushFront(name) } fmt.Println("list: " + time.Now().Sub(t).String()) } func slice() { names := []string{} t := time.Now() for i := 1; i <= 1000000;...阅读全文

博文 2014-10-04 19:26:41 stephen830

golang 性能分析

http://wangzhezhe.github.io/blog/2016/04/30/golang-gc/ Debugging performance issues in Go programs Profiling Go Programs http://shenfeng.me/go-gc-optimize-map.html http://www.cnblogs.com/gaochundong/p/hashtable_and_perfect_hashing.html#collision_resolution_chaining http://stackoverflow.com/questions/664014/what-integer-hash-function-are-good-that-a...阅读全文

博文 2016-07-29 16:00:01 B0-1

Go 唯一标识生成库 NUID

NUID 是一个高性能的唯一标识生成库,使用 GO 语言开发。 示例代码:

// Utilize the global locked instance
nuid := nuid.Next()

// Create an instance, these are not locked.
n := nuid.New()
nuid = n.Next()

// Generate a new crypto/rand seeded prefix.
// Generally not needed, happens automatically.
n.RandomizePrefix()阅读全文

一款golang实现的高性能持久化消息队列

https://github.com/LevinLin/OPQOPQAn Open sourced Persistent message QueueCode is tested under go1.4.2 (CAUTION: OPQ hasn't been tested in production environment so far)Features1.persistent message storage2.push model - push message to target service and block when failure3.easy to use - simple API whith HTTP POST method, no addtional client integr...阅读全文

博文 2017-05-05 06:56:35 levin

Go1.1性能测试报告(和C差距在10%以内)

最近Go1.1正式发布, 根据官方的说法, Go1.1性能比Go1.0提升基本有30%-40%, 有时更多(当然也有不明显的情况). Go1.1的详细介绍: Go1.1新特性介绍(语言和库更完善/性能提高约30%). 这里是针对Go1.1和C语言的性能测试: 测试的重点是语言的性能, 当然也会受到标准库性能的影响. 测试环境 测试程序: $GOROOT/test/bench/shootout/timing.sh 硬件配置: Intel® Core™ i7-3770 CPU @ 3.40GHz; 16GB内存 操作系统: CentOS6.3 x86_64 补充: i7-3770是4核心8线程. gcc和gc版本: gcc -v gcc version 4.4.7 20120313 (Red H...阅读全文

博文 2015-05-08 11:33:34 chai2010

轻量级且高性能的 Golang 网络库gnet

[项目详情链接](https://taohuawu.club/go-event-loop-networking-library-gnet) `gnet` 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库。这个库直接使用 [epoll](https://en.wikipedia.org/wiki/Epoll) 和 [kqueue](https://en.wikipedia.org/wiki/Kqueue) 系统调用而非标准 Golang 网络包:[net](https://golang.org/pkg/net/) 来构建网络应用,它的工作原理类似两个开源的网络库:[libuv](https://github.com/libuv/libuv) 和 [libevent](ht...阅读全文

阿里云高性能I/O云服务器+SSD云盘,1元抢购中…

阿里云高性能I/O云服务器+SSD云盘,1元抢购中… 在业务场景中,你是否经常会遇到这些问题?游戏客户出现卡顿,图片加载不出来,丢数据;用户量大,高并发读写,用户访问加载不出来,对数据安全和性能稳定要求高;测试的用例执行慢,应用的QPS慢,应用的RT长…… 经过几年的发展,越来越多的用户认可云计算的弹性、便捷、低成本等优势。云计算不但帮助用户减少IT基础设施的投入、而且帮助用户提升业务部署效率;因此,我们能看到越来越多的用户将其核心业务搬上云。由于核心业务涉及到大量的数据存取,存储性能的好坏将直接决定用户能否将其核心业务搬到云上。 为了解决用户核心业务上云的诉求,解决上述这些业务场景中的常见问题,我们推荐您选择云服务器(I/O优化实例)+SSD云盘(http://clic...阅读全文

Golanggoappmonitor

golang 编写的程序,在程序开发完成之后,我们更想做的是对程序运行的状态能够时刻了解,或者在业务上跑着的程序出现了 bug 我们想要更加快速方便的知道问题出在哪里?监控包括程序运行的 cpu ,内存等系统状态,还有我们可以根据自己的需要自定义需要的监控数据。例如某一个任务队列,某一个函数的执行情况,错误出在哪里等...阅读全文

开源项目 2016-11-29 14:03:50 wgliang

Goroutine 本地存储库gls

golang 语言目前唯一的高性能 goroutine local storage 实现,每秒可以完成数百万次Get/Set。 ``` Operate Performance Benchmark_Goid 5.30 ns/op Benchmark_Set 271 ns/op Benchmark_Get 155 ns/op Benchmark_Set_4Threads 129 ns/op Benchmark_Get_4Threads 58.6 ns/op ``` 使用起来极为简单: ```go import "github.com/yyzybb537/gls" // 设置协程局部变量 gls.Set("Value", 1) // 获取协程局部变量 var i int = gls.Ge...阅读全文

go语言/IDE/golang/go语言list和slice性能测试

直接上代码package main import ( l "container/list" "fmt" "time" ) var ( name = "viney" ) func list() { names := l.New() t := time.Now() for i := 1; i <= 1000000; i++ { _ = names.PushFront(name) } fmt.Println("list: " + time.Now().Sub(t).String()) } func slice() { names := []string{} t := time.Now() for i := 1; i <= 1000000; i++ { names = append(names, n...阅读全文

博文 2015-06-17 20:17:46 love_se

golang 性能优化之 bitset 代替 hashset

hashset 是一种非常高效的数据结构,插入和查询的复杂度都是 O(1),基本上能满足大部分场景的性能需求,但在一些特殊的场景下,频次非常高的调用依然会成为性能瓶颈(用 pprof 分析),比如广告里面的定向逻辑,在一次请求中过滤逻辑可能会执行上千次,而其中有些过滤刚好都是一些枚举值,比如性别定向,年龄定向等等,对于这种可以用枚举表示的值可以用 bitset 优化,能有20多倍的性能提升 bitset 的本质也是一种 hashset,只不过哈希桶用一个 uint64 来表示了,uint64 中的每一位用来代表一个元素是否存在,如果为1表示存在,为0表示不存在,而插入和查询操作就变成了位运算 bitset 实现 bitset 的实现比较容易,下面这个是一个只支持枚举值不超过64的版本,当然也...阅读全文

博文 2018-04-12 17:34:47 hatlonely

go中斐波切纳数列

package main import ( "fmt" // "time" ) func main() { fmt.Println(sum(5)) fmt.Println(amount(5)) } // 1+1+2+3+5 func sum(n int) int { if n == 1 || n == 2 { return 1 } return sum(n-1) + sum(n-2) } // 1+1+2+3+5 func amount(n int) int { if n == 1 || n == 2 { return 1 } a, b := 1, 1 for i := 3; i < n; i++ { a, b = b, a+b } return a + b } 第二种方法性能更好...阅读全文

博文 2016-11-14 05:00:01 Samete9011

阿里P8架构师谈:如何搭建亿级并发系统的性能指标体系

性能指标的分类为了更好的去监控整个系统的性能,做好全流程的优化,主要分为3类:1.感知系统性能这类指标主要从工程师的角度去衡量,如后端的:响应时间当前并发的用户数请求数请求的错误率等等。2.用户体验性能用户实际感觉网页是否加载延迟首屏时间白屏时间完全加载时间之类3.系统性能这类指标重点查看服务器:服务器的cpu内存网络带宽流量等等物理资源。对于上述的每一类,衡量标准可能都不一样,在数据展示方面,主要通过趋势图和汇总表格来展现,下面来对这3类指标分别细说:感知系统性能这类指标主要为工程师设计,来衡量业务后端的处理速度,主要从以下几个方面去衡量:1) 响应时间响应时间是性能的主要kpi。首先对每个业务的整体(集群)响应时间有个衡量:95%的响应时间:将一段时间内所有请求的响应时间中取一个值,使9...阅读全文

博文 2018-09-17 13:53:46 Java_fenxiang

[杭州]杭州云柚科技招聘Go架构师

职位描述: 1. 负责云柚系统整体架构设计与规划; 2. 负责优化核心业务的性能指标和资源消耗; 3. 负责指导相关工程师,按照质量要求完成相关业务开发工作 任职资格: 1. 熟练掌握 C/C++, Java, Python, Go 等语言中的至少两种,本科以上学历,3年以上开发经验; 2. 有丰富的工作经验,能够独立主导要求对自己做的项目有自己深入的理解,并能持续的关注和优化自己做的项目,研究过或参与过优秀开源软件者优先; 3. 熟悉 MongoDB/Redis 应用开发,熟悉数据库原理和常用性能优化技术,以及 NoSQL 原理、使用场景以及限制; 4. 参与过大型复杂分布式互联网系统的设计、架构者优先; 5. 有较强的逻辑思维能力,善于分析、归纳、解决问题;...阅读全文

菜鸟求助:关于goroutine问题

现需要设计一款SNMP采集器,采集共约50台机器的数据,每台机器上有若干指标值需采集,且每个指标值需独立设置采集周期,我设想的是使用goroutine对50台机器进行并发采集,其中对每项指标采集也使用goroutine,请大牛们赐教,这样的goroutine嵌套能实现吗?P.S.新手上路,求...阅读全文

go的chan深度解析,已经go disruptor不适合go的高并发模式

首先看下go的chan内部源码​chan 内部是一个固定长度的数组,这个数组又是环形队列。qcount数组实际大小,dataqsize数组长度,buf为实际数组指针,sendx,recvx为接受发送索引,用于环形队列,自增超过dataqsize索引清0,recvq,sendq链表保存等待或者发送groutinue信息,他是先进先出的队列。lock,go的chan的锁实际是自旋锁。让我们在看下lock的代码​go的自旋锁实际采用tas testandset,当tas次数<4次的时候,procyyield内部汇编是空转cpu,<5 yield交出时间片给其他groutinue,其他情况,就一直tas一直到成功为止环形队列,如下​在探讨下godisruptor为什么不适合go的并发开发1.首先语法...阅读全文

博文 2019-08-07 10:54:01 bobohume

golang性能优化之bitset代替hashset

hashset 是一种非常高效的数据结构,插入和查询的复杂度都是 O(1),基本上能满足大部分场景的性能需求,但在一些特殊的场景下,频次非常高的调用依然会成为性能瓶颈(用 pprof 分析),比如广告里面的定向逻辑,在一次请求中过滤逻辑可能会执行上千次,而其中有些过滤刚好都是一些枚举值,比如性别定向,年龄定向等等,对于这种可以用枚举表示的值可以用 bitset 优化,能有20多倍的性能提升 bitset 的本质也是一种 hashset,只不过哈希桶用一个 uint64 来表示了,uint64 中的每一位用来代表一个元素是否存在,如果为1表示存在,为0表示不存在,而插入和查询操作就变成了位运算 bitset 实现 bitset 的实现比较容易,下面这个是一个只支持枚举值不超过64的版本,当然也...阅读全文

博文 2018-11-09 17:34:58 Chole121

Golang高性能json包:easyjson

简介easyjson是什么呢? 根据官网介绍,easyjson是提供高效快速且易用的结构体structs<-->json转换包。easyjson并没有使用反射方式实现,所以性能比其他的json包该4-5倍,比golang 自带的json包快2-3倍。 easyjson目标是维持生成去代码简单,以致于它可以轻松地进行优化或固定。安装go get -u github.com/mailru/easyjson/go install github.com/mailru/easyjson/easyjsonorgo build -o easyjson github.com/mailru/easyjson/easyjson验证是否安装成功。$ easyjson Usage of D:\Code\go\bin...阅读全文

博文 2018-07-02 12:20:21 梦朝思夕