V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  guonaihong  ›  全部回复第 9 页 / 共 23 页
回复总数  459
1 ... 5  6  7  8  9  10  11  12  13  14 ... 23  
2020-05-17 16:25:07 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@useben 和 jinzhu/copier 对比,deepcopy 快。压测结果可看附言 1.
2020-05-13 13:34:57 +08:00
回复了 guonaihong 创建的主题 程序员 在命令行里面准备起飞--解释来龙去脉
@paoqi2048 哈哈。。。
2020-05-09 13:59:14 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@lewinlan 是的,反射包要少用,老师傅也容易写出 bug 。
2020-05-07 22:09:12 +08:00
回复了 xmge 创建的主题 程序员 一句话概括为什么学习 go 语言
@jimyan go 可以不依赖 libc,直接 env CGO_ENABLED=0 就行。
2020-05-07 15:05:46 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@tcfenix 这是我的 test code,结果表明 copier 连两次序列化 json 的时间都比不过,性能直接垫底。。。https://github.com/antlabs/deepcopy-benchmark
2020-05-07 14:18:55 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@tcfenix 测试错了吧,把代码贴到 V2EX 呢(我现在翻墙有问题),我测试,copier 是比较慢的,这速度有点像空跑。
2020-05-07 13:48:08 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@blackboom ok, 我思考下。
2020-05-07 13:37:33 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@rrfeng hi rrfeng 。不加 tag 可以直接拷贝的。所有 ->“我要是能在源结构里加 tag,直接写个 copy 方法不爽快吗??”,所以,不 tag,不需要写 copy 方法会更更爽快。。。

从 ->"我觉得一个完整的工程里很难用到 deepcopy 这种方法,更多的是用别人的数据结构,然后想复制一份出来操作避免侵入原数据,所以 tag 毫无用武之地……" ,这里说了 if 的情况,所以 else 也是有点用的,比如都是自己的包,刚好要过滤几个字段。。。
2020-05-07 11:48:26 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@useben 好,会压测下,结果到时候通知。
2020-05-07 11:19:47 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@pmispig 结构体里面套指针,套 interface{},套 slice,套 map,不可以深度拷贝。
2020-05-07 11:18:52 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@pmispig slice, map 可以深度拷贝?
2020-05-07 10:48:08 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@tcfenix 谢了。
2020-05-07 10:19:38 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@yuyoung 标准库里面的代码做了缓存,所有第一个版本只领先了 18%-30%。如果用同样的思路优化,领先的会更多。
毕竟序列化,反序列化的方式深度拷贝要两次 reflect 。
2020-05-07 10:15:12 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@guonaihong 可否把你的 benckmark 代码发下。我优化下,再看下性能。
2020-05-07 10:05:26 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 向繁琐的赋值代码说不。deepcopy.Copy 深度拷贝来了
@tcfenix jsoniter 里面也用的 reflect API ?晚上我加下缓存优化下。
2020-04-30 18:35:07 +08:00
回复了 davidyanxw 创建的主题 Go 编程语言 协程执行问题请教
@wsseo @davidyanxw 这两天有点事就没有回答两位的问题。刚刚做了一些试验,发现了更有意思的地方。
1.如果写 chan 的地方是算术表达式,go 会提前进行预处理(对 c<-*p+0),可能已经换成 c<-123,所有大概率返回 123
2.如果是值,就换按正常逻辑往下走。time.Sleep 之后,两个 go 程开始了竞争,num=789 的执行速度,比唤醒生产者 chan+写数据快,所有大概率返回 789 。

当然上面从数据中总结的规律特别依赖 go 的版本(go 1.13.1),大家也不要太在意。也许哪天人家(Go Core Team)就改了。就当乐一乐,原来 go 还有一些小动作。
```go
package main

import (
"fmt"
"time"
)

var x = 0

func call() {
var num = 123
var p = &num
c := make(chan int)
go func() {
//c <- *p + 0 //大概率返回 123
c <- *p // 大概率返回 789
}()
time.Sleep(time.Second / 1000)
num = 789
readValue := <-c
if readValue == 123 {
fmt.Printf("hello %d\n", readValue)
}
}

func main() {
for i := 0; i < 1000000; i++ {
call()
}
}

```
2020-04-29 12:56:48 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 golang 里面有好用的配置中心吗
@PiersSoCool 感谢。。。
2020-04-27 09:21:21 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 golang 里面有好用的配置中心吗
@falsemask @hst001 @hotsymbol @xkeyideal @janxin 感谢大家提供的信息,后面我玩下。
2020-04-25 18:13:35 +08:00
回复了 davidyanxw 创建的主题 Go 编程语言 协程执行问题请教
这个问题和抛硬币一样。
c <-*p + x,既可能返回 123,也可能返回 789 。这和 thread 切换,先跑了哪个指令有关系(先跑了 num=789 还是后跑了),你可以把 sleep 时间修改小,证明这个现象。
```go
package main

import (
"fmt"
"time"
)

var x = 0

func call() {
var num = 123
var p = &num
c := make(chan int)
go func() {
c <- *p + x // 1. 返回 123
// c <- *p // 2. 返回 789
}()
time.Sleep(time.Second / 1000)
num = 789
readValue := <-c
if readValue == 789 {
fmt.Printf("hello 789\n")
}
//fmt.Println(readValue)
}

func main() {
for i := 0; i < 1000000; i++ {
call()
}
}

```
2020-04-25 15:30:19 +08:00
回复了 guonaihong 创建的主题 Go 编程语言 golang 里面有好用的配置中心吗
@falsemask 可有配套的管理界面?
1 ... 5  6  7  8  9  10  11  12  13  14 ... 23  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2280 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.