首页   注册   登录

Buffer2Disk

V2EX 第 183142 号会员,加入于 2016-07-22 09:31:12 +08:00
今日活跃度排名 13926
Buffer2Disk 最近回复了
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@neoblackcap 没有啊,golang 里面的 list 就是双向链表实现的 = =
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@neoblackcap
我尝试了下,golang 里面用 map 这种哈希结构的集合来存储数据,它判断元素是否存在的时间复杂度也是 O(1)
使用之后,cpu 的消耗 比 单纯的用 for 循环来迭代降下来不少

所以伪代码就是这样
for i in list {
if map[i] != null {
//存在
}
}

两个 6000 个元素的集合情况下
map 时间复杂度 O(n) , cpu 消耗 1%
for 循环迭代 O(n^2) ,cpu 消耗 4%

在元素比较多的情况,map 这种能够快速检索 key 的结构还是有优势的
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@neoblackcap 网上那些 golang 的第三方库, 判断一下这个元素是否在 的这个操作(contains),内部实现也是一个循环,所以实际上也就变成了 2 个循环在叠代

python 我不清楚是怎么个实现法儿的
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@neoblackcap 不过有个疑问就是,为什么 Python 计算集合的差集的时候时间复杂度是 O(n)呢? python 计算差集原理我不太了解

因为 golang 的官方并没有提供计算差集的库,我去网上看了一些第三方 golang 库的源码,实际上也是通过嵌套循环来实

现集合计算差集的,并且这种嵌套循环在数据量比较大的时候,cpu 占用也并不是太高
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@neoblackcap 确实,算差集的时间复杂度要小很多
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
<img src="https://i.loli.net/2019/07/17/5d2e09582d18548030.png" alt="5555.png" title="5555.png" />
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@niubee1 大佬,我的关注点其实是在 cpu 和 运行耗时 一起的

我试了下你的代码

排除掉了 range 的因素,提前创建好 list,cpu 的消耗依然不低啊(相对于 go 的 cpu 占用来说,使用的是 1 核的虚拟机)

当然我是通过 top 粗略的看了下 python 进程的 cpu 占用,可能不是那么的精确,但是能侧面反映出来大概的占用情况
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@niubee1 好的,谢谢大佬,我研究研究
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@niubee1 我看你这个是用 in 和 not in 来判断元素是否在 list 存在是嘛?

这个我试过了,cpu 消耗依然很高,估计 in 和 not in 的内部实现也是通过这种循环来实现的
4 天前
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@neoblackcap 你的意思是,range 返回列表的时候,是消耗 cpu 的主要部分嘛?

我怎么感觉是循环的时候消耗的,我另外一份代码循环的时候,是直接 2 个 list 来嵌套循环的,没有 range

然后加了 sleep(0.1) ,cpu 就降价来了,但是这样的话,循环的耗时就大大增加了
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2035 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 9ms · UTC 11:28 · PVG 19:28 · LAX 04:28 · JFK 07:28
♥ Do have faith in what you're doing.