問題タブ [noop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - JavaScript — マウス イベント リスナーで最もパフォーマンスの高いノーオペレーション?
環境
Redux アプリケーションを構築しており、アプリケーションの状態に応じてイベント ハンドラーを変更したいと考えclick
ています。mousemove
これを達成するために、click
単一のmousemove
ハンドラーをにアタッチすることを計画していdocument
ます。これらは、Redux ストアをサブスクライブするスコープに属し、関連する状態を認識します。
ハンドラーを実装するための 2 つの戦略があります。
switch
関連する状態変数に対してステートメントを使用します。これswitch
は、発生したイベントごとに呼び出す必要があります。- 状態が更新されるたびに参照対象を交換する内部 (スコープへの)
scope._clickHandler
およびプロパティを参照します。scope._moveHandler
質問1:
戦略 2 を選択した場合、mousemove
ほとんどの場合、ハンドラーは何もしないでください。しかしmousemove
、たくさん解雇されます!scope._moveHandler
プロパティにバインドできる最もパフォーマンスの高い no-op 関数は何ですか?
質問2:
switch
最良のケース (w/r/t 質問 1) では、戦略 1 で使用されるステートメントが 10 から 100 のケースをテストする必要があると仮定すると、戦略 2 は戦略 1 よりもパフォーマンスが高くなりますか?
明確化
このアプローチでは、イベントが発生したときに常に 1 つの「委任」関数が呼び出されます。その関数は、状態プロパティに応じて異なることを行います。これは、その状態を で一致させるか、単に異なる「委任先」関数を状態としてswitch
バインドすることによって行われます。
質問 1 は、最適な何もしない「委譲」関数について質問しますが、質問 2 はswitch
、コールバックに大きなブロックがあることによって生じるパフォーマンスの低下について質問しmousemove
ます。
私たちコミュニティが@nnnnnnの直観に同意する場合function(){}
、ノーオペレーションと同じくらい優れているとしたら、私の質問は次のようになります。
switch
no-op 関数呼び出しのオーバーヘッドと、ブロック内の等値比較のどちらがパフォーマンスに悪いのでしょうか?
mips - MIPS 命令間のノーオペレーション数
次のような一連の指示があります。
質問は:
転送のない基本的な 5 ステージのパイプラインでは、I2 と I3 の間に何回の noop が必要ですか?
数は 2 だと思いますが、本で与えられた解は 1 です。手がかりをいただければ幸いです。
実際の問題は、コンピュータの構成と設計、The Hardware/Software Interface Fourth editionの演習 4.13 です。
multithreading - javamail のアイドル状態がメッセージのトリガーを停止するしばらくするとスレッドがロックされる
メール メッセージを受信して処理する Android アプリを開発しています。アプリは IMAP サーバーに接続し、接続を維持する必要があります。これにより、新しいメール メッセージを即座に確認して処理できます (メールには、メール API サーバーからの json データが含まれます)。アプリには、手動接続とライブ接続の 2 つのモードがあります。これが私のコードの一部です:
}
問題は次のとおりです。Alive Connection モードで、ユーザーが更新している場合やアプリが自動更新されている場合に、この条件のいずれかまたは両方が原因で、アプリが新しいメッセージを受信できなくなることがあります。これは、javamail ソース コードからのものです。
1: IdlerThread は次の時点でモニター状態に入ります。
2: 「refresherThread」は次の時点で待機状態に入ります。
この両方のスレッドのいずれかが実行を「停止」するため (待機および監視状態)、この状態に達するとアプリは役に立たなくなります。私の国では、モバイル データ ネットワークは非常に不安定で、遅くて高価です (GSM)。
接続がサイレントに失敗し、refresherThread がその仕事を開始すると、問題が発生すると思います。アイドルがアクティブな場合は DONE コマンドを発行しますが、接続が失われると、アイドルが FolderClosedException をスローしようとすると、一方または両方のスレッドが無期限にロックされます。
ですから、私の質問は次のとおりです。この状況が発生する理由と、それを防ぐ方法は? ロックされることなく、アイドル ループを安全に実行し続けるにはどうすればよいですか?
飽きるまで色々試しましたが結果が出ません。
私の問題を解決せずに読んだいくつかのスレッドを次に示します。私の国ではインターネットも非常に高価なので、私が望むほど多くの情報を調査することも、情報を求めてアクセスしたすべての URL をリストすることもできません。
JavaMail: IMAPFolder.idle() を維持する
JavaMail: IMAPFolder.idle() を維持する
Javamail : IMAPFolder の idle() を発行する適切な方法
私の英語を許してください。どんな提案でも大歓迎です。このサイトの厳しさについて聞いたことがありますので、お手柔らかにお願いします。私はここに来たばかりです。
bash - Crontab メールの件名の日付
次のようなcrontabプロセスをスケジュールするubuntuサーバーがあります。
プロセスの最後に、「Backup Settings ...」という件名のメールが届きます。基本的に、noop 関数 (:) は「バックアップ設定」という言葉に対して何もしません。今日の日付をメールの件名に追加したいと思います。当然、やってみました
しかし、それは目的の電子メールの件名、つまり「20180519 バックアップ設定」にはなりません。$(...) コードは評価されません。backup_settings.sh を呼び出す電子メール機能を備えた別のスクリプトを実行したくありません。crontab で Bash コマンドだけを使用してそれを行う方法はありますか?