来自具有25年编码经验的人提出的新手问题。
因此,请您在快速回答之前,继续阅读。 :)
我目前正在编写解释器(基本上是一个字节码堆栈虚拟机),用于我自己设计的编程语言。整个代码库都用C编写(用2-3种不同语言(从D到Nim的重写)后的代码)
长话短说,我试图找出最佳方法,始终以最佳性能为目标。
我已经尝试过Boehm的GC。基本上,每当我分配内存时就使用GC_malloc
(或GC_malloc_atomic
),而每当我要释放它时都使用GC_free
。
这使我的口译员在我正在运行的多个基准测试中提高了10%的速度。
这让我感到困惑。
是因为Boehm的GC_free
根本不执行任何操作(直到实际执行)?
现在,我决定关闭GC并手动完成所有操作。每个malloc都有其空闲空间,仅此而已。内存消耗下降了(我猜这是Boehm以前没有释放任何东西的原因)。但是性能也下降了。
因此,我决定尝试使用...不同的malloc。在这种情况下,为rpmalloc。并且性能再次提高。
我想念东西吗?
由于您可能对这个问题感到困惑:
malloc
进行实验有意义吗?就改善字节码解释器的性能而言>][具有25年编码经验的人提出的新手问题。因此,请在快速回答之前继续阅读。 :)我目前正在编写解释器(基本上是字节码堆栈VM ...
您的问题非常广泛,可能在本网站上接近非主题。