[入门] 再论D语言数组的性能
qiezi
2007-06-08
Lich_Ray 写道 """D语言本身没有提供堆分配的途径,无论是数组还是对象的new分配都是在GC里进行的"""
GC 就是公有堆啊.... 所以说D的举措有点多余啊。 我很反对往一个语言中加太多东西。KISS。 看不明白你在说什么呢。“语言同时提供公有堆和GC实在是”这是你上面所说的话,在这里这2个又成一个了。。。 |
|
oldrev
2007-06-08
Lich_Ray 写道 """D语言本身没有提供堆分配的途径,无论是数组还是对象的new分配都是在GC里进行的"""
GC 就是公有堆啊.... 所以说D的举措有点多余啊。 我很反对往一个语言中加太多东西。KISS。 Lich_Ray 写道 ....语言同时提供公有堆和GC实在是....
这似乎是矛盾的?我不知道“多余的”指的是什么? 难道是 GC? |
|
Lich_Ray
2007-06-08
""GC 就是公有堆啊....""
靠!我省略引用你说的话就抓我这个把柄?! 我希望D语言不要帮用户做选择,将如何使用内存的权利留给用户;GC 的话,有个框架和少量语言设施就够了(比如delete关键字调用用户定义的GC方法)——一个系统编程语言,居然允许在在堆上分配数组——它以为它是神啊,做它的公司的程序员水平就比编写第三方库的人水平高是不是啊?真正做系统编程的时候,这种东西死都没人敢用——整个儿是一哗众取宠的功能——估计菜鸟看了会兴奋异常。一个语言想做好,不确定自己是否能做到的事就不要多管闲事。 |
|
oldrev
2007-06-08
好吧,我首先承认,我从来没有为 STL 写过分配器
貌似前面的帖子里我从来没有说过GC是堆呀,D语言本身仅有GC和栈两种内存分配方式,我真不知道如何在不用C函数和 OS API 的情况下在堆上分配内存。 就“允许”而言,恐怕是所有的语言都可以调用C库函数在C运行时堆上分配内存的吧 |
|
Lich_Ray
2007-06-08
看来我得好好考虑学学语文了是吧?
""就“允许”而言"" 我指的是语言设施中允许(比如那个aArray.length=10),不用语言本身的特性是办不到的。不要我来解释什么叫语言设施吧?C在分配内存的时候当然"允许"xxx,但那不是语言本身提供的特殊语法。这就意味着,没有人来强迫你使用 malloc(),事实上,你可能也知道,malloc()不是最有效的。然而在提供了太多这样那样的特性的语言中,你就很容易在这些问题上摸不着头脑,不是吗?C++为什么让人崩溃,特性太多,多到了人们研究出来的最有效的用法和设计初衷完全两码事。D语言如此自负,什么只希望最后不要比C++跟令人崩溃。 |
|
oldrev
2007-06-08
是不是指动态数组用库实现?这是见仁见智的问题,你得去问Walter Bright。
|