私は最近、HTTPルーティングに使用されるnodejsパッケージअनुमार्गाक(Anumargak)を作成しました。奇妙なパフォーマンスの問題に直面しています。
on
ルートを登録し、登録されたルートfind
を見つける方法があります。
var anumargak = Anumargak();
anumargak.on("GET",'/some/url',fn);
anumargak.find("GET",'/some/url');
ユーザーがon
メソッドを呼び出すと、最初にfind
メソッドを呼び出して、ルートがすでに登録されているかどうかを確認します。そうでない場合は、ルート情報を2D配列に保存します。ユーザーがfind
メソッドを呼び出すと、2D配列でエントリを探すだけです。
Anumargak.prototype.on = function(method,url,fn){
if(this.find(method,url)){
this.count --;//count of unique registered routes.
}
this.count +=1;
this._on(method,url,fn);//_on method has actual logic of saving route information
}
Anumargak.prototype.find = function(method,url){
var result = this.staticRoutes[method][url];
if(result) return result.fn;
else{
//handles dynamic routes
}
return this.defaultFn;
}
find
メソッドはメソッドに依存しませんon
。しかし、メソッドからfindメソッドを呼び出すと、findメソッドのon
パフォーマンスが半分に低下します。on
メソッドを1回だけ呼び出して、メソッドのパフォーマンスをテストしていますfind
。考えられる理由は何ですか?
ノードv9.5.0を使用しています。
パフォーマンスの問題は何だったのかわかりません。しかし、呼び出しthis.find()
は正しくありませんでした。this.find
登録されたURLは正規表現またはパラメータの詳細を持つことができるのに対し、実際のURLを受け入れるためです。
したがって、パフォーマンスも解決する問題を修正するためにコードを書き直しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加