【纯go写的类sqlite来了】

topgenius
87.53% 2013-11-04 字数 393

Jan Mercl

2:47 AM (16 hours ago)

1. Package ql is a pure Go embedded (S)QL database.

Installation: go get github.com/cznic/ql

Docs: http://godoc.org/github.com/cznic/ql

2. Accompanying tool to play with a DB

Installation: go get github.com/cznic/ql/ql

Docs: http://godoc.org/github.com/cznic/ql/ql

-j

via: https://groups.google.com/forum/?fromgroups#!topic/golang-nuts/pDIJJEaqg4U

Golang Go编程语言
9 个回复
stshine
wakeup;run 2013-11-05

我觉得Go语言里很多东西用C写然后CGo接口过来比较好啊,为什么一定要用原生呢

【 在 topgenius (87.53%) 的大作中提到: 】

:         Jan Mercl

: 2:47 AM (16 hours ago)

: 1. Package ql is a pure Go embedded (S)QL database.

: ...................

feuvan
new life 2013-11-05

原生的就不依赖.so了

【 在 stshine (wakeup;run) 的大作中提到: 】

: 我觉得Go语言里很多东西用C写然后CGo接口过来比较好啊,为什么一定要用原生呢

adamhj
淘气阿丹 2013-11-05

问题是新写的东西怕低层有个bug什么的坑很大啊

【 在 feuvan (  ) 的大作中提到: 】

: 原生的就不依赖.so了

enceladus
方寸纵横 2013-11-05

这样啊.

希望Go能热度持续到生态系统建立成熟的那一天.

这些年,曾经热或者预计很热的语言, 很多都是昙花一现. Js,ObjC是成功的, Lua,D感觉始终小众, Ruby感觉也快歇菜了.

wxstorm
企鹅 2013-11-06

还是市场决定需求~~

纯搞个语言,把已有的东西再实现一遍,没有那么大的战略意义~~

【 在 enceladus (我爱小母牛) 的大作中提到: 】

: 这样啊.

: 希望Go能热度持续到生态系统建立成熟的那一天.

: 这些年,曾经热或者预计很热的语言, 很多都是昙花一现. Js,ObjC是成功的, Lua,D感觉始终小众, Ruby感觉也快歇菜了.

: ...................

stshine
wakeup;run 2013-11-06

有道理。想当年Linux也是借着Linux+Apache的Web Server组合才上位的。

看来Go语言必须要找到某一个新兴杀手级应用的市场

比如云计算?Web服务;对性能有要求;需求变化快,需要快速开发;

虽然我觉得这个概念本身就不太靠谱...

【 在 wxstorm (企鹅) 的大作中提到: 】

: 还是市场决定需求~~

: 纯搞个语言,把已有的东西再实现一遍,没有那么大的战略意义~~

wangscu
小丑鱼 2013-12-06

CGO为了提供C代码运行环境,同时隔离C代码(C语言和go语言的执行环境不太一样),是采用C代码在一个额外的OS原生线程(非go程)里面执行,每次go代码里面调用C代码API的时候,会将上下文交给C代码线程,当C代码执行完毕的时候再唤醒go代码所在的go程。所以一次cgo调用其实就是一次OS级别的线程切换,而GO语言最大优势就是提供一个用户态的go程切换调度系统来避免OS级别线程(syscall)切换带来的性能影响。

所以CGO虽可以解决老代码的重用问题,但是同样也损耗了go代码的优势,换句话说用CGO就是在用GO语言写C程序,GO语言最大的优势(go程也就是超线程)将无法发挥作用。

但如果是一些比较成熟的且开发难度的大的类库,自己重写感觉就得不偿失了,毕竟稳定和开发速度在现实当中往往比性能重要多啦,说不定自己重写也没有C类库写得好,得自己权衡吧。

【 在 stshine 的大作中提到: 】

: 我觉得Go语言里很多东西用C写然后CGo接口过来比较好啊,为什么一定要用原生呢

stshine
wakeup;run 2013-12-06

是这样啊,我还一直以为是静态链接的呢。

【 在 wangscu (小丑鱼) 的大作中提到: 】

:     CGO为了提供C代码运行环境,同时隔离C代码(C语言和go语言的执行环境不太一样),是采用C代码在一个额外的OS原生线程(非go程)里面执行,每次go代码里面调用C代码API的时候,会将上下文交给C代码线程,当C代码执行完毕的时候再唤醒go代码所在的go程。所以一次cgo调用

:    所以CGO虽可以解决老代码的重用问题,但是同样也损耗了go代码的优势,换句话说用CGO就是在用GO语言写C程序,GO语言最大的优势(go程也就是超线程)将无法发挥作用。

:    但如果是一些比较成熟的且开发难度的大的类库,自己重写感觉就得不偿失了,毕竟稳定和开发速度在现实当中往往比性能重要多啦,说不定自己重写也没有C类库写得好,得自己权衡吧。

: ...................

papillon
种善因得善果 2013-12-16

有人用过这玩意么?30w条记录,select distinct要半分钟,是哪里写的有问题还是怎么个意思?要是就这么个效率完全没法用啊.