1

Scheme/Racketの実行時間set!と実行時間を知っている人はいますか?begin

一定だと思いますset!が、よくわかりません。

4

4 に答える 4

2

このset!操作は、値をシンボルに関連付ける(「バインドする」)だけO(1)です。これは、自尊心のあるプログラミング言語の場合です。バインディングを探すことは必ずしもO(1)実装の詳細に依存するわけではありませんが、それはまったく別の問題です(Racketの詳細はわかりません)。

に関してbeginは、それはシーケンス形式であり、それを適用すること自体にコストはなく、その内容(内部に保持されている式)のみが時間計算量を決定します。についても同じですが、割り当てset!の部分の評価には時間がかかる場合がありますが、set!操作自体はO(1)

于 2012-10-27T21:22:45.630 に答える
2

設定!O(1) です。この点に関しては、Scheme と他の言語に違いはありません。

于 2012-10-27T21:10:51.763 に答える
2

1 つの注意点: 設定してください! と begin の両方に部分式があります。どちらかで時間がかかる場合は、セットの評価を!(または開始)も同様です。

于 2012-10-27T21:59:06.547 に答える
1

のパフォーマンスが気になる場合はset!、ミューテーションを回避する方が高速になる可能性があることに注意してください。ラケット ガイド: 突然変異とパフォーマンスを参照してください。

于 2012-10-31T02:31:16.520 に答える