newLisp -- Memory and datatypes in newLISP

Memory and datatypes in newLISP

newLISPのメモリとデータ型

The memory objects of newLISP strings are allocated from and freed to the host's OS whenever newLISP recycles the cells from its allocated chunks of cell memory. This means that newLISP handles cell memory more efficiently than string memory. As a result, it is often better to use symbols than strings for efficient text processing. For example, when handling natural language it is more efficient to handle natural language words as individual symbols in a separated name-space, rather than as a single string. The bayes-train function in newLISP uses this method. newLISP can handle millions of symbols without degrading performance.

newLISP文字列のメモリオブジェクトはその割り当てられたセルメモリのチャンクからセルを再利用したときはいつでもホストのOSへ割り当てられホストOSへ開放されます。
これはnewLISPがセルメモリを文字列メモリより効果的に扱うことを意味します。
結果として、効果的なテキスト処理のためにシンボルを使用することはしばしば文字列を使用するよりよいです。
例えば、自然言語を扱うとき分離した名前空間で個々のシンボルとして自然言語を扱うことは単独の文字列より、より効果的です。
newLISPのbayes-train関数はこの方法を使用します。
newLISPはパフォーマンスの低下なしに何百万ものシンボルを扱うことができます。

Programmers coming from other programming languages frequently overlook that symbols in LISP can act as more than just variables or object references. The symbol is a useful data type in itself, which in many cases can replace the string data type.

しばしば他のプログラミング言語から来ているプログラマーはLISPのシンボルがただの変数やオブジェクトの参照より多くのあたら気をすることが出来ることを見落とします。
シンボルはそれ自身役に立つデータ型です、それは多くの場合文字列型に代わることができます。

Integer numbers and double floating-point numbers are stored directly in newLISP's LISP cells and do not need a separate memory allocation cycle.

整数と2倍の浮動小数点数はnewLISPのLISPセルに直接格納されて個々のメモリ割り当てサイクルを必要としません。

For efficiency during matrix operations like matrix multiplication or inversion, newLISP allocates non-cell memory objects for matrices, converts the results to LISP cells, and then frees the matrix memory objects.

行列の掛け算や転置のような行列演算の間の効率のために、newLISPは行列のために非セルメモリオブジェクトを割り当てます、結果をLISPセルに変換、そして行列メモリオブジェクトを開放します。

newLISP allocates an array as a group of LISP cells. The LISP cells are allocated linearly. As a result, array indices have faster random access to the LISP cells. Only a subset of newLISP list functions can be used on arrays. Automatic memory management in newLISP handles arrays in a manner similar to how it handles lists.

newLISPはLISPセルの集まりとして配列を割り当てます。
LISPセルは線形に割り当てられます。
結果として、配列インデックスはLISPセルへより早いランダムアクセスを持ちます。
newLISPのリスト関数のサブセットだけが配列で使用することが出来ます。
newLISPの自動メモリ管理はそれがリストを扱うのに似た方法で配列を扱います。


>> Automatic Memory Management in newLISP
>> Traditional automatic memory management (Garbage Collection)
>> One reference only, (ORO) memory management
>> Performance considerations with value-passing
>> Memory and datatypes in newLISP
>> Implementing ORO memory management

0 件のコメント: