V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  penguinWWY  ›  全部回复第 1 页 / 共 5 页
回复总数  94
1  2  3  4  5  
个人最喜欢用的是 py-spy
40 天前
回复了 chinesehuazhou 创建的主题 Python Python 为什么如此设计?
不少都是强行找理由
某些问题就是设计的菜或者个人口味问题
@learningman 需要环境变量 CODON_PYTHON ,用来指定 libpython
看了下 Codon 的实现,目前只能算是个玩具
这个思路有点像前几年在 js 上做 Code smells and type analysis —— 只要用户写出非常易于优化的代码,我就可以优化的非常好。
79 天前
回复了 kelvin_fly 创建的主题 职场话题 把每个月的工资当最后的一次工资
@XVXVXXX 这个回家,莫名觉得很有气势
121 天前
回复了 andyJado 创建的主题 程序员 非 CS, 想弄弄编译, 还啃龙书吗?
啃龙书没啥意义。
如果你想整体了解编译,不要在 parser 上浪费时间,parser 是一个非常“符合直觉”的事情,本质上就是如何把一段文本变成结构化的数据,所以不要被各种名词唬住,自己写一个简单的表达式解析器,就能大概明白了。同时 parser 在整个编译过程中只占了很小的一部分,基本没啥值得关注的东西。

编译整体看是一个不断 lower ( desuger )的过程,用简单代替复杂,具体代替抽象。所以整体看的话,你需要大概了解一下体系结构和指令集,也就是编译的终点是什么样的。中间的过程不管是 AST 也好,IR 也好,no-target machine code 还是 target machine code ,从认知上来讲,都不是必须的(你完全可以设计一个非常简单的表达式语言,然后直接翻译成汇编指令),这些步骤只是为了满足某种需求( native code or Interpreter ? JIT or AOT ? interprocedural or intraprocedural ?)而增加的、便于使用的中间层。

明确输入(语言、特性、功能)和输出(目标指令集),剩下的就是取舍和拼接。现在编译体系复杂之处在于为了某些目标(性能、功能、复杂的语言特性)而在不同层次间不得不产生耦合,使用某些约定(而不是设计)。当这种情况越多,原本清晰的结构就会变成一坨。。。
143 天前
回复了 ResistanceTo 创建的主题 Python 切实有需求的点子
写新的 test ,或者写一些方便 debug 、处理日志的小脚本
list 生命周期结束的时候会调用 list_dealloc 函数,但并不会立即释放内存。而是存放在对应的 free list 中,如果有新的大小合适的 list 生成则会直接使用,减少内存分配和释放的消耗。

print(id([])); print(id([]))

两次分配的 list 是同一个指针,所以 id 相同。debug 模式是通过 trace 实现的,中间有别的 list 生成(或释放),所以没有使用到同一个指针,id 不同
180 天前
回复了 penguinWWY 创建的主题 Python 发一个看起来没啥用的字节码编辑库
180 天前
回复了 penguinWWY 创建的主题 Python 发一个看起来没啥用的字节码编辑库
180 天前
回复了 pkupyx 创建的主题 程序员 奇特的码农群招一下新人
一眼群聊精华就是入关,然后你说 no 键政~~~
@codists 合着你知道”machine value“不是一个常见的用法?这本来就不算是一个专业术语,我们帮你推测验证它的具体含义,然后你说没有给出定义?要饭要的这么理直气壮的吗?

“计算机科学与技术”专业毕业的人不知道内存表示和补码不是一码事?不会 C 语言? CSAPP 没看过?毕业挺好,下次不要毕业了。
@codists 内存表示和二进制补码不是一个东西

arraymodule.c 里的实现就是从一个 PyBuffer 里 memcpy 了数据,fromfile 的实现是直接调用了 frombytes ,所以内存中如何表示,array 就如何存储,这么解释不明白?

“an array of machine values”指的就是存在多个元素,那么用每个元素的内存表示,组合成一个数组。

所以楼上让你学 C 语言还真说对了
@codists machine value 就是指数据在内存中的表示啊,前几楼说的没啥问题
在家当然是什么爽用什么
kotlin 、scala 、rust 、ocmal 一把嗦
263 天前
回复了 hhhhhh123 创建的主题 Python 有没有质量好一点的 vx 群或者 qq 群
一个群,如果不用来开车,那还有什么意义
这两件事情之间没什么特别大的关系。

除开汇编,任何语言的执行要么通过编译器编译到机器指令,要么通过解释器解释执行,包括楼上所说的各种硬件特性,也是编译器能够生成这种形式的机器码,跟语言本身没啥关系。

换句话说,编译器优化的极限决定了语言性能的上限,你拿一个玩具编译器去编译 C 代码,也跑不过 cpython 解释执行的 python 代码。

而一个基本的结论是,动态特性的使用跟优化效果成反比,跟执行时的负载成正比。

举个例子,如果 C 语言现在改成函数调用必须使用函数指针实现,不允许直接调用函数名,并且这个指针变量必须得是全局的。那么意味着所有 interproduce optimization 、inline 、link time optimization 都不起作用了,其他 DCE 、GVN 之类的优化也将受到巨大限制,性能下降百倍起步。

反过来,如果对 python 做出各种限制,比如不允许使用继承、一个变量只允许一次赋值等等,然后为这个受限制的 python 再实现一个编译器,那么完全可以获得跟 C 语言在大部分场景下相似的性能,即便它不能手动 mallco/free 。
2022-01-07 11:07:05 +08:00
回复了 penguinWWY 创建的主题 酷工作 我又来了,真招 Python
@junnplus 可以呀
2022-01-07 11:06:27 +08:00
回复了 penguinWWY 创建的主题 酷工作 我又来了,真招 Python
@tkmiles 我们之前有人参加了 openEuler Compiler SIG 的技术沙龙
https://mp.weixin.qq.com/s/3u-y0NL2qC4tS8l1SWyf-A
第四个——Python 在大数据领域的实践和思考,但是视频好像没有放出来
但是因为缺人,宣传上的事情还没有投入
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   266 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 51ms · UTC 20:31 · PVG 04:31 · LAX 12:31 · JFK 15:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.