関数内にグローバル変数はありません。ローカル変数しかありません。グローバル変数は、グローバル スコープ (関数の外) でのみ定義できます。ただし、couchbase では、reduce 関数以外で変数を定義することはできません。
ビューのパフォーマンスを測定したい場合、この関数は複数回呼び出すことができるため、コードの一部を測定するだけなので、コードは完全に間違っています。reduce 関数については、couchbase のドキュメントを参照してください (以下のリンクを参照)。
最後に、作成したコードは、ビューのインデックス作成のパフォーマンスしか測定できないため、ビューのパフォーマンスを測定しません。また、ほとんどの場合、インデックス作成プロセスはバックグラウンドで実行され、ビューのパフォーマンスには影響しないため、ビューのパフォーマンスはインデックス作成のパフォーマンスと同じではありません。
ビューとその仕組みについては、このドキュメントを読むことをお勧めします。reduce 関数に関する段落にも注意してください。
UPD: グローバル変数は、reduce 関数のコンテキストでは存在できませんでした。view とその reduce 関数に関するドキュメントを注意深く読んだ場合、reduce 関数はクラスター内の異なるサーバーで複数回呼び出すことができることを理解する必要があります。したがって、クラスター内の複数のサーバーでグローバルになる変数を定義することはできません。返された変数のみを操作できます。また、reduce 関数で処理する必要があります。処理rereduce
しない場合は、最新の reduce の rereduce の時間をカウントし、以前のすべての値を無視します。
ビューのパフォーマンスを測定するより良い方法は、負荷テストを生成し、ビューのインデックス作成プロセスの絶対時間ではなく、最大操作/秒で操作することです。インデックス作成速度を測定する必要がある場合はstale=false
、結果を返す前にソファベースにインデックスを強制的に更新させるパラメーターを使用してビューにクエリを実行するため、そのクエリの時間は、結果のマッピングと削減にかかった時間を表します (つまり、curl または Web ブラウザーを使用することもできます)。 . しかし、実際のアプリケーションでは、stale=false
.
reduce コードを調整するには、ブラウザでパフォーマンスを測定するか、nodejs で測定します。reduce 関数をコピーして、マップ データで呼び出すだけです。ブラウザでコードを最適化すると、コードは CB で高速になります。オンラインの jsvascript map-reduce エミュレーターを見つけることもできます。