dontRepeatMessages コンテキスト

dontrepeatmessages コンテキストは、複数の通知間で重複する参照変更メッセージを削除するという最適化を、例外に対して安全に拡張します。

with dontRepeatMessages <boolean> <expression>

「重複する参照変更メッセージの削除」による最適化が有効なときに(preferences.dontRepeatRefMsg を参照)、単一の参照変更通知中に重複するメッセージが同じオブジェクトに送信された場合、重複メッセージは削除されます。 dontrepeatmessages コンテキストの場合、この最適化は、このコンテキスト内のすべての参照変更通知に適用されます。例えば、次のようになります。

with dontrepeatmessages on with animate on for t = 1 to 100 do at time t $.radius = t/2

最初の値を設定するときに選択したノード $ の従属に送信された通知は、残りの値設定操作では送信されません。これにより、パフォーマンスが大幅に向上することがあります。たとえば、以下を実行した場合は、

s = sphere isSelected:true
(t1=timestamp();with dontrepeatmessages off with animate on for t = 1 to 10000 do at time t s.radius = t/2;timestamp()-t1)

このコンテキストですべての値をオフに設定するのに 226 ミリ秒かかりました。一方、以下を実行した場合は、

s = sphere isSelected:true
(t1=timestamp();with dontrepeatmessages on with animate on for t = 1 to 10000 do at time t s.radius = t/2;timestamp()-t1)

このコンテキストですべての値をオンに設定するのに 175 ミリ秒かかりました。

関連する設定を参照してください

preferences.dontRepeatRefMsg

.