newLisp -- Performance considerations with value-passing

Performance considerations with value-passing

値渡しで考慮すべきパフォーマンス

Passing parameters by value (memory copying) instead of by reference poses a potential disadvantage when dealing with large lists. For practical purposes, however, the overhead needed to copy a large list is negligible compared to the processing done on the list. Nevertheless, to achieve maximum performance, newLISP offers a group of destructive functions that can efficiently create and modify large lists. While cons and set-nth return a new memory object of the changed list, push, pop and nth-set change the existing list and only return a copy of the list elements that they added or removed. In order for any user defined function to operate destructively on a large list, the large list must be passed by reference. If a list is packaged in a context (a namespace) in newLISP, then newLISP can pass the list by reference. newLISP contexts are the best choice when passing big lists or string buffers by reference.

参照によっての代わりに値(メモリコピー)によってパラメータを渡すことは大きなリストを扱うときに潜在的な不利をもたらします。
実際には、しかしながら、大きなリストをコピーするのに必要なオーバーヘッドはリストで行われる処理と比較して無視できます。
それでもやはり、最大のパフォーマンスを実現するために、newLISPは巨大なリストの生成と修正ができる破壊的な関数の一群を提供します。
そしてconsとset-nthは変更されたリストの新しいメモリオブジェクトを返します、push、popとnth-setはは既にあるリストを変更し加えられたまたは削除されたリストの要素のコピーを返すだけです。
どんなユーザー定義の関数でも破壊的に巨大なリストを操作するために、巨大なリストは参照によって渡されなければなりません。
もしリストが文脈(名前空間)でパッケージされるならば、newLISPは参照によってリストを渡すことができます。
newLISPの文脈は参照によって大きなリストや文字列バッファを渡すとき最良の選択です。

In most cases where lists are less than a few hundred elements long, the speed of ORO memory management more than compensates for the overhead required to pass parameters by value.

ほとんどの場合リストが200〜300要素の長さのとき、OROメモリ管理の速さは値渡しによってパラメータを渡すことを要求されるオーバーヘッドを補って余りあります。


>> 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 件のコメント: