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

golang 记录函数执行耗时的一个简单方法。

先写一个公共函数, 比如在 common 包下有这么一个方法: // 写超时警告日志 通用方法func TimeoutWarning(tag, detailed string, start time.Time, timeLimit float64) { dis := time.Now().Sub(start).Seconds() if dis > timeLimit { log.Warning(log.CENTER_COMMON_WARNING, tag, " detailed:", detailed, "TimeoutWarning using", dis, "s") //pubstr := fmt.Sprintf("%s count %v, using %f seconds", tag,...阅读全文

博文 2015-01-29 03:00:02 ghj1976

Golang 性能忽然增加变慢10倍的现象,推测是编译器在spilt stack,导致的问题

本测试分别执行三种测试: 1.程序嵌套调用时使用int; 2.程序嵌套调用时使用int+string; 3.程序嵌套调用时使用int+interface{}; 测试脚本如下: // stackSplitTest package main import ( "fmt" "time" ) //测试函数嵌套多少次后,进行runtion.stackSplit,导致运行效率急剧下降 var C = make(chan int, 100) var F = "嵌套次数%5d,From=%5d,To=%5d,Group=%6d,耗时%7s毫秒\t%d\n" //计算函数 func sum(from int, to int) (r int) { r = 0 for i := from; i <= to; i+...阅读全文

golang版本的通用时间轮 Timewheel

一个通用的timewheel工具类 通用粗精度的timewheel,只启动一个timer,可监听任意多的到期时间,放入的用户数据可以是任何类型。 接口说明: 1. Start: 开始一个timewheel ; 2. SetCallback: 设置时间到期时的回调函数,回调函数中不可作过于耗时的操作,以免卡住timewheel的正常运行; 3. Add: 添加需要监控的对象,务必在Start调用后再调用此接口; 4. Stop: 停止此timewhee...阅读全文

go语言_异步编程_example.01

package main import ( "log" "math/rand" "time" ) func UploadNetvalueFile(done chan bool) { //利用随机函数模拟不同文件的处理时间 r := rand.New(rand.NewSource(time.Now().UnixNano())) x := r.Intn(20) log.Println("UploadNetvalueFile: ", x) time.Sleep(time.Second * time.Duration(x)) log.Println("UploadNetvalueFile OK") done <- true } func UplaodSaleFareFile(done chan bo...阅读全文

博文 2015-06-17 23:05:56 zistxym

教你轻松做一个响应式网站

在响应式还未流行的时候,很多企业与互联网公司都觉得响应式网站应该是大企业才用的上,大企业才有资金去投入。对于这个问题小编只能说,没错放在前段时间做一个响应式网站的确需要高投入,而且还很耗时间。但是放在今天来讲,小编可以告诉你,以现在的互联网技术,做一个响应式网站快的只需要几个小时,需要细致完成的也就几天时间。这样的发展速度,让众人所惊叹! 在响应式还未流行的时候,很多企业与互联网公司都觉得响应式网站应该是大企业才用的上,大企业才有资金去投入。对于这个问题小编只能说,没错放在前段时间做一个响应式网站的确需要高投入,而且还很耗时间。但是放在今天来讲,小编可以告诉你,以现在的互联网技术,做一个响应式网站快的只需要几个小时,需要细致完成的也就几天时间。这样的发展速度,让众人所惊叹! 现在...阅读全文

求指教 session.Run过后如何实时逐行读取Stdout数据

```go package main import ( "bytes" "fmt" "golang.org/x/crypto/ssh" "os" ) func main() { var bt bytes.Buffer config := &ssh.ClientConfig{ User: "test", Auth: []ssh.AuthMethod{ ssh.Password("test"), }, } client, err := ssh.Dial("tcp", "10.0.192.123", config) if err != nil { os.Exit(1) } session, err := client.NewSession() if...阅读全文

在8核cpu 15G内存的设备上开启10万个协程处理10万条数据 没有任何log打印的情况下 耗时4min为什么这么慢呀,协程并发处理感觉没用上

在8核cpu 15G内存的设备上开启10万个协程处理10万条数据 没有任何log打印的情况下 耗时4min,查看设备信息 cpu最高峰才使用141% 内存最高才占用8% ,为什么这么慢呀,协程并发处理感觉没用...阅读全文

go+chan并发执行

利用一个chan执行一个并发的任务, 整个任务的最大耗时是最耗时的那个子任务 func SendChan(data int){ t := 10 - data if data == 5{ t = 20 } time.Sleep(time.Duration(t*1e9)) C <- data } func main(){ for i:=0; i<10; i++{ go SendChan(i) } for i:=0; i<10; i++{ var data int = <- C fmt.Println("data:", data) } ...阅读全文

博文 2017-08-05 03:14:54 jinjiashan

一人耗时 2 年,收集 2000 多万数据,创建了一个提供免费翻译搜索的网站

> 作为小微开发者,难以支付高昂的翻译费用,在线翻译又难以满足精度,所以想通过复用高质量的翻译实例进行软件内容翻译,我花了两年时间收集了2000 多万条移动 app 的翻译数据,将它们做成了一个搜索网站,期望能帮助小微开发者以更低的成本更好的质量完成软件或者网页的国际化。 #### i18n 多语言语料搜索引擎 - 网址:[https://i18ns.com](https://i18ns.com/) - 功能:支持 11 国语言搜索,包括:中文、英文、西班牙文、葡萄牙文等语言。有一千多种语言数据,超 2000 多万条数据,免费提供搜索服务。 - 详细介绍: <https://i18ns.com/help.html> - 中文搜索地址:[http...阅读全文

生产者与消费者

package main import ( "fmt" "gitee.com/ha666/golibs" "github.com/astaxie/beego/logs" _ "ha666/initial" "math" "time" ) func main() { ch := make(chan int, 100000) defer close(ch) for i := 1; i < 3; i++ { go producer(fmt.Sprintf("生产者%d", i), i, ch) } time.Sleep(1 * time.Second) for i := 1; i < 5; i++ { go consumer(fmt.Sprintf("消费者%d", i), i, ch) } ti...阅读全文

博文 2017-12-22 05:07:38 ha666

go的time

package main import ( "fmt" "time" ) func main() { fmt.Println(time.Now()) fmt.Println(time.Now().Unix()) fmt.Println(time.Now().Second()) //程序耗时可以用结束时间-开始时间 fmt.Println(time.Now().UnixNano()) //里面的时间必须按照这些数值来 fmt.Println(time.Now().Format("02/1/2006 15:04")) fmt.Println(time.Now().Format("2006-1-02 15:04")) } 输出:2019-01-22 13:44:16.0255278 +0800 C...阅读全文

博文 2019-01-22 18:35:15 梁十八

阻塞的协程如何超时退出?

``` func main() { ctx, cancel := context.WithTimeout(context.TODO(), time.Second*3) defer cancel() // 防止任务比超时时间短导致资源未释放 // 启动协程 go task(ctx) // 主协程需要等待,否则直接退出 time.Sleep(time.Second * 4) } func task(ctx context.Context) { ch := make(chan struct{}, 0) // 真正的任务协程 go func() { // 模拟两秒耗时任务 time.Sleep(time.Second * 2) ch <...阅读全文

Golang 红包算法入门版

import ( "fmt" "math/rand" "sync" "time" ) type RedPack struct { Id string Num int // 红包个数 NumDelivered int // 已拆包数量 Amount int // 红包金额 AmountDelivered int // 已发放金额 } func NewRedPack(num int, amount int) *RedPack { return &RedPack{Num: num, Amount: amount, NumDelivered: 0, AmountDelivered: 0} } func (pack *RedPack) get() int { if pack.NumDelivered ...阅读全文

博文 2020-05-07 15:38:26 AngryApe

golang 简单函数耗时打点

简单方式 package main import( "fmt" "time" ) func main(){ defer timeCost(time.Now()) fmt.Println("start program") time.Sleep(5*time.Second) fmt.Println("finish program") } func timeCost(start time.Time){ terminal:=time.Since(start) fmt.Println(terminal) } 更优雅的方式 func timeCost() func() { start := time.Now() return func() { tc:=time.Since(start) fmt.Prin...阅读全文

博文 2020-05-21 19:32:46 夜空一起砍猩猩

golang实现简化版桶算法

/** * 简化版桶算法 * 通过一维数组保存对应数字在一维数组中出现的个数,然后遍历一维数组达到排序的效果 * 这里一位数组是排序列表的范围,必须10以内的数字列表排序, 则一维数组大小为11 (N+1) * * 涉及知识点: * @随机数功能 * @时间处理和格式化 */ package main import ( "fmt" "math/rand" "time" ) func main() { var scoreList [11]int score := [5]int{5, 3, 5, 2, 8} for _, v := range score { scoreList[v]++ } fmt.Println(scoreList) var result []int // fmt.Print...阅读全文

博文 2020-05-25 03:32:49 全栈运维