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 ミリ秒かかりました。
関連する設定を参照してください
.