私は少し調査をしました、そして私が見つけたもののほとんどは良い数年前のものです。私はJSを初めて使用し、徐々に知識を深めていきます。
Console.log()は非常に便利なツールですが、一般的にパフォーマンスが低いことに非常に警戒しています(https://jsperf.com/console-log1337/16またはhttps://jsperf.com/console-log1337/33基本的な例として)、そして悪い評判。
本番アプリケーション/ Webサイトにconsole.log()スタイルのエラーメッセージを残す必要がある場合、バニラJS(フレームワーク/ライブラリなし)にネイティブな、よりパフォーマンスの高い代替手段はありますか?
私の最初の考えは、代わりにすべてのログ項目を後で収集できる配列にプッシュすることでした(必要な場合)が、Promise.all()と組み合わせて使用するとうまく機能しないようです-たとえば、配列の場合、代わりに、最後の値を持つ単一の配列、または10個の個別の配列を取得します。
ネイティブまたは最も推奨される代替案はありますか(これは「意見」に開かれていることを理解してください-他にどのように表現すればよいかわかりません!)?
PS-フォーマット不足についてお詫びします...モバイル!
... 業績不振
テストケースの1つは、空の関数の呼び出しとの呼び出しを比較しconsole.log
ます。空の関数はおそらく、JITコンパイラによってインライン化されますので、あなたが実際に比較されていない全くのコードをしますconsole.log
。確かに、これほど高速なコードはありません。
レンダリングループ内でログを記録している場合や、非常に頻繁に実行されている場合を除いて、ログによる(顕著な)ラグは発生していません。
...悪い評判
真剣に?私の目には、JSには他の言語と比較してデバッグするための優れた方法があります(おそらくJSが最も優れたバグを持っているためです:))ネストされた構造を「ライブ」で表示でき、ブレークポイントで実行を停止でき、debugger;
ステートメントを使用してデバッグ用のコードを準備できます、メモリ全体をダンプしたり、GCの動作、ホットな機能などを視覚化したりできます。はい、これらの機能はすべてパフォーマンスが低下しますが、コンソールのパフォーマンスは非常に良好です。
バニラJS(フレームワーク/ライブラリなし)にネイティブな、よりパフォーマンスの高い代替手段はありますか?
ロギングはJavaScriptを実行するエンジンに直接書き込まれます。つまり、JSを介してアクセスできない多くのものにアクセスできます。また、ネイティブコードはコンパイルされたJavaScriptよりも常に高速です(または同等に高速ですが、誰もそれを保証できません)。
実稼働アプリケーション/ Webサイトにconsole.log()スタイルのエラーメッセージを残す必要がある場合...
そして、誰がこのログを読むべきですか?エラーが発生した場合に、クライアントにコンソールを調べるように依頼しますか?
本番環境にログインすると、デバッグを通じて使用するすべてのものがログに記録されるわけではありませんが、エラーを追跡できるだけで十分です。そのため、エラーが発生した場所(「メニューを開く」など)とエラー自体を見つけるためのパンくずリストがいくつかあります。
自分で本番ログを書きたくない場合は、JSの歩哨をご覧ください
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加