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,甚至是树莓派...阅读全文

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

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

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

轻量级且高性能的 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...阅读全文

性能测试工具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

一款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

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 李维

可视化系统监控工具 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...阅读全文

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

对比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

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

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

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

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()阅读全文

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

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

我们用4行代码节省了100万 相见恨晚的PCDN

我们公司主要做视频在线点播,还有少量视频下载。比较关心网络加速,首先就是价格,其次是首播时间、流畅率这几个核心性能指标。目前使用阿里云PCDN也有几个月了,整体结果是超预期、值得安利的。写这篇文章,希望能通过选型对比、接入过程、效果实现几个方面的真实感受,给还在犹豫的同行们一些启发,希望文章内容对你们有所帮助。 废话少说,先直接说效果:每月的CDN费用比以前少了近50%,首播时间、流畅率略优于使用中的2家CDN。这个结果真是让人喜大普奔,原以为PCDN价格比CDN低这么多,性能会不好,没想到这货不仅价格低,性能比CDN还只好不差,一年能给老板省将近100万,妈妈再也不用担心我的年终奖啦。这个羊毛究竟该怎么薅,请听我一一道来。 先说选型阶段,是什么原因让我们选择了阿里云PCDN? ...阅读全文

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...阅读全文

开源项目 2017-06-29 07:00:03 网友

用golang实现json序列化,避免输出null

最近开发过程遇到一个go序列化的问题, 前端要求数据返回 { "user":"zhangsan", "role":[ {"name":"管理员"},{"name":"观察者"} ] } go中的数据结构是这样的 type Role struct{ Name string `json:"name"` } type Info { User string `json:"user"` Role []Role `json:"role"` } data,_:=json.Marshal(&info{User:"zhangsan"}) fmt.Println(string(data)) 如果info.Role没有数据时,因为go的json标准库会将空切片、空指针返回null,实际返回给前端的数据是这样的 {...阅读全文

博文 2020-03-25 12:32:42 悟道人

Golanggoappmonitor

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

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

技术性能领先,阿里云网络产品全面升级为企业级

摘要: 在12月13日的阿里云网络产品发布会上,阿里云将详细介绍其网络产品家族重大更新,阿里云网络产品已经全面升级为企业级。届时,云栖社区将会对发布会进行直播,欢迎预约https://yq.aliyun.com/promotion/434。 在12月13日的阿里云网络产品发布会上,阿里云将详细介绍其网络产品家族重大更新,阿里云网络产品已经全面升级为企业级。届时,云栖社区将会对发布会进行直播,欢迎预约https://yq.aliyun.com/promotion/434 那么,如何理解升级为企业级呢?我们认为企业级需求主要有产品丰富度、性能、稳定、安全几个方面。 首先,丰富的产品家族满足企业级多样需求。 随着云骨干网的发布,阿里云已经有涵盖5大场景的11款网络产品(还不...阅读全文

Go语言之性能测试相关(基准测试)

来自公众号:灰子学技术 原文链接:https://mp.weixin.qq.com/s/CmiPafXfvzJjM6UxaFCaCQ在Go语言中,提供了测试函数性能(CPU和Memory)的测试方法,基准测试。基准测试主要用来测试CPU和内存的效率问题,来评估被测代码的性能。测试人员可以根据这些性能指标的反馈,来优化我们的代码,进而提高性能问题。本篇文章主要来介绍,基准测试的使用方法和性能指标的分析。1. 使用规则如下所示:1.基准测试的代码文件必须以_test.go结尾。2.基准测试的函数必须以Benchmark开头。3.基准测试函数必须接受一个指向testing.B类型的指针作为唯一参数。4.在测试执行之前,需要调用b.ResetTimer(重置计时器)来重置时间,以便过滤掉测试之前代码...阅读全文

博文 2019-10-12 15:22:32 ZhDavis

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

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

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

互链独家|招商银行张育明:我们真的需要为每个应用建一条链吗?

【互链脉搏讯】招商银行是较早使用区块链技术的银行,2017年12月,招商银行联手永隆银行、永隆深圳分行,成功实现了三方间使用区块链技术的跨境人民币汇款。这是全球首笔基于区块链技术的同业间跨境人民币清算业务。在4月10日深圳举办的2019中国国际区块链技术与应用大会上,招商银行区块链负责人张育明介绍了该行区块链领域最新的进展,除了落地13个项目外,还牵头搭建了一个许可链平台。 张育明介绍,招行银行所做的十多个许可链项目,一个项目搭建一条链。但遇到很大的问题;节点数量少,网络存在安全性问题;复用度低,资源损耗大;网络管理复杂,维护成本高。“十几个项目,不到10个节点。”张育明提出一个问题:“我们真的需要为每个应用建一条链吗?”因此招商银行提出了分层建设许可区块链的思路,和有区块链技术开放能力的合...阅读全文

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

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

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

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