V2EX LoongRiver
 LoongRiver 最近的时间轴更新
LoongRiver

LoongRiver

V2EX 第 637436 号会员,加入于 2023-07-06 20:52:36 +08:00
LoongRiver 最近回复了
2023-07-27 22:42:54 +08:00
回复了 LoongRiver 创建的主题 程序员 以练代学,用 Rust 实现 Lua 解释器
@ViVi333 我的本意是为了学习 Rust ,而拿 Lua 解释器作为一个练手的项目。

不过你不会 Rust ,这也是有好处的。就是你可以只看文章里的文字说明部分,然后用自己的理解,用 C 语言自己实现一遍。如果我本来就是用 C 语言介绍的,那你可能就偷懒了,只是自己看一遍而不去自己实现,或者自己实现的时候不独立思考而是直接照搬我的代码。

自己实现一遍的收获 是远大于 只看一遍文章的。

不过 Lua 的官方实现是 C 语言,你也可以参考。网上也有很多源码阅读的文章,也有几本相关的实体书。
2023-07-14 17:49:20 +08:00
回复了 LoongRiver 创建的主题 程序员 以练代学,用 Rust 实现 Lua 解释器
@zuisong 欢迎多提意见 :)
2023-07-14 12:17:30 +08:00
回复了 LoongRiver 创建的主题 程序员 以练代学,用 Rust 实现 Lua 解释器
@wxf666 虽然主要是为了学习,但是也会考虑性能方面。追求性能的话,对 Rust 学的就更深入些。

1. Lua 的官方实现本身已经在性能方面很高效了,要想全面超过基本不可能的了。能尽力做到一致就很知足了。

2. 因为个人能力不足,所以直接使用了 Rust 的 Rc 来做垃圾回收。一般认为 RC 比狭义的 GC 要慢。具体讨论可以参见文章中的 [垃圾回收和 Rc]( https://wubingzheng.github.io/build-lua-in-rust/zh/ch03-05.gc_vs_rc.html) 这节。

3. 但在某些方面,我的实现是比 Lua 的官方实现要更高效的。主要是对短字符串的处理。具体参见 [字符串定义]( https://wubingzheng.github.io/build-lua-in-rust/zh/ch03-01.string_type.html) 这节。

4. 我做了一些简单的性能测试。很多情况下比官方实现慢 1 倍,但有的情况下,比如短字符串比官方实现快一些。不过我希望能在完成大部分功能后,再去做完整的性能测试和优化。所以目前做的性能测试就没贴出来。
2023-07-14 09:03:13 +08:00
回复了 LoongRiver 创建的主题 程序员 以练代学,用 Rust 实现 Lua 解释器
@llbbzh 赞同。所以我在写的时候,尽量多画图,然后是列表,再然后是文字,实在不行再贴代码。
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     942 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 14ms UTC 22:31 PVG 06:31 LAX 15:31 JFK 18:31
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86