setImmediate()がシーケンシャルコードよりも高速に実行されるのはなぜですか?

ジョン・ドウ

setImmediate()がどのように機能するかを学んでいて、技術的な説明が見つからないという奇妙なことに遭遇しました。

コードは本当に簡単です:

setImmediate(function(){
    console.log("third", process.hrtime() );
});

console.log("first", process.hrtime() );
console.log("second", process.hrtime() );

このコードを何度実行しても、一般的な結果は常に同じです。つまり、次のようになります。

シーケンシャルコードの時間(「最初」と「2番目」の印刷の間)は、「2番目」と「3番目」の印刷の間の時間より3倍長くかかるように見えます。

これを説明するために、3つの出力例を示します。

例1

C:\>node tick.js
first [ 24684, 930636615 ]
second [ 24684, 933914009 ]
third [ 24684, 935172006 ]

最初から2番目までは0.0033秒かかります

2番目から3番目は0.0012秒かかります(= 3倍速い)

例2

C:\>node tick.js
first [ 24706, 107198319 ]
second [ 24706, 110517238 ]
third [ 24706, 111784622 ]

1秒から2秒は0.0034秒かかります

2番目から3番目は0.0012秒かかります

例3

C:\>node tick.js
first [ 24707, 952826072 ]
second [ 24707, 956081565 ]
third [ 24707, 957319084 ]

最初から2番目までは0.0032秒かかります

2番目から3番目は0.0013秒かかります

したがって?

setImmediateが次のイベントループで発生するという事実を考えると、2つの連続するコード行(「1番目と2番目」)が分離されたコード行(「2番目と3番目」)より3倍長くかかる理由を誰かが知っていますか?setImmediate()を介したさまざまなイベントループ?

それはフラスコになります

console 通話は他の通話よりもはるかにコストがかかるため、テストが汚染されます。

の出力

let time1;
let time2;
let time3;

setImmediate(function(){
  time3 = process.hrtime();

  console.log(time1[1]);
  console.log(time2[1]);
  console.log(time3[1]);
});

time1 = process.hrtime();
time2 = process.hrtime();

です

908101090

908184221

909359846

そしての出力

let time1;
let time2;
let time3;

setImmediate(function(){
  time3 = process.hrtime();

  console.log(time1[1]);
  console.log(time2[1]);
  console.log(time3[1]);
});

time1 = process.hrtime();
console.log();
time2 = process.hrtime();
console.log();

です

949882232

954583707

956190379

したがって、これはNode.jsコンソールの実装に非常に固有です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

EclipseのPyDevPythonコンソールよりもEclipseコンソールの方がコードが高速に実行されるのはなぜですか?

分類Dev

このコードでCPUがGPUよりも高速に実行されるのはなぜですか?

分類Dev

コマンドラインに比べてIntelliJでアプリケーションが高速に実行されるのはなぜですか?

分類Dev

collections.Counterがソースコードを直接実行するよりも高速に実行されるのはなぜですか

分類Dev

バイトコードがネイティブコードよりも高速に実行される可能性があるのはなぜですか

分類Dev

リモートプロシージャコールを行う際に、UDPがTCPよりも優先されるのはなぜですか?

分類Dev

コードが想定よりもはるかに多く実行されるのはなぜですか?

分類Dev

printf()の前にwrite()が実行されるのはなぜですか?おそらくシーケンシャルではないですか?

分類Dev

コードのこの部分が他の部分よりも先に実行されるのはなぜですか?

分類Dev

シーケンシャルコードがマルチスレッドコードよりも速いのはなぜですか?

分類Dev

Pythonマルチプロセッシングがシーケンシャルに実行されているのはなぜですか?

分類Dev

パラレルコードがシーケンシャルより遅いのはなぜですか

分類Dev

2番目のコードセグメントが最初のコードセグメントよりもはるかに高速に実行されるのはなぜですか?

分類Dev

プロセスの数がPythonのCPUのスレッドの総数よりも多い場合、アプリケーションをより高速に実行できるのはなぜですか?

分類Dev

コードは、g ++でコンパイルするよりもRcppで高速に実行されます

分類Dev

Rubyで文字列を作成するときに、シャベル演算子(<<)がプラスイコール(+ =)よりも優先されるのはなぜですか?

分類Dev

次のコードが正常にコンパイルおよび実行されるのはなぜですか?

分類Dev

test1()がtest2()よりもはるかに高速に実行されるのはなぜですか?

分類Dev

シェルコマンドがsnakemakeによって実行されないのはなぜですか

分類Dev

ストリームを使用するこのコードがJava 9でJava 8よりもはるかに高速に実行されるのはなぜですか?

分類Dev

FreeBSDのアプリケーションがLinuxよりも実行が遅いのはなぜですか?

分類Dev

「読み取り」が「カーネルモード」で実行されるシステムコールである必要があるのはなぜですか?

分類Dev

派生クラスのフィールドで実行されているコードのシーケンスは何ですか?なぜこの出力を取得したのか知りたいのですが、理解できません

分類Dev

この操作がGPUよりもCPUで高速に実行されるのはなぜですか?

分類Dev

gcloudコマンドラインツールがブラウザのアップロードよりもはるかに高速なのはなぜですか?

分類Dev

ここでJavaがCよりも高速に実行されるのはなぜですか?

分類Dev

コードの1つのサンプルが他のサンプルよりも実行に時間がかかるのはなぜですか?

分類Dev

非同期コードが同期よりもはるかに高速であると見なされるのはなぜですか?

分類Dev

アプリケーションが上から下に実行されるのはなぜですか

Related 関連記事

  1. 1

    EclipseのPyDevPythonコンソールよりもEclipseコンソールの方がコードが高速に実行されるのはなぜですか?

  2. 2

    このコードでCPUがGPUよりも高速に実行されるのはなぜですか?

  3. 3

    コマンドラインに比べてIntelliJでアプリケーションが高速に実行されるのはなぜですか?

  4. 4

    collections.Counterがソースコードを直接実行するよりも高速に実行されるのはなぜですか

  5. 5

    バイトコードがネイティブコードよりも高速に実行される可能性があるのはなぜですか

  6. 6

    リモートプロシージャコールを行う際に、UDPがTCPよりも優先されるのはなぜですか?

  7. 7

    コードが想定よりもはるかに多く実行されるのはなぜですか?

  8. 8

    printf()の前にwrite()が実行されるのはなぜですか?おそらくシーケンシャルではないですか?

  9. 9

    コードのこの部分が他の部分よりも先に実行されるのはなぜですか?

  10. 10

    シーケンシャルコードがマルチスレッドコードよりも速いのはなぜですか?

  11. 11

    Pythonマルチプロセッシングがシーケンシャルに実行されているのはなぜですか?

  12. 12

    パラレルコードがシーケンシャルより遅いのはなぜですか

  13. 13

    2番目のコードセグメントが最初のコードセグメントよりもはるかに高速に実行されるのはなぜですか?

  14. 14

    プロセスの数がPythonのCPUのスレッドの総数よりも多い場合、アプリケーションをより高速に実行できるのはなぜですか?

  15. 15

    コードは、g ++でコンパイルするよりもRcppで高速に実行されます

  16. 16

    Rubyで文字列を作成するときに、シャベル演算子(<<)がプラスイコール(+ =)よりも優先されるのはなぜですか?

  17. 17

    次のコードが正常にコンパイルおよび実行されるのはなぜですか?

  18. 18

    test1()がtest2()よりもはるかに高速に実行されるのはなぜですか?

  19. 19

    シェルコマンドがsnakemakeによって実行されないのはなぜですか

  20. 20

    ストリームを使用するこのコードがJava 9でJava 8よりもはるかに高速に実行されるのはなぜですか?

  21. 21

    FreeBSDのアプリケーションがLinuxよりも実行が遅いのはなぜですか?

  22. 22

    「読み取り」が「カーネルモード」で実行されるシステムコールである必要があるのはなぜですか?

  23. 23

    派生クラスのフィールドで実行されているコードのシーケンスは何ですか?なぜこの出力を取得したのか知りたいのですが、理解できません

  24. 24

    この操作がGPUよりもCPUで高速に実行されるのはなぜですか?

  25. 25

    gcloudコマンドラインツールがブラウザのアップロードよりもはるかに高速なのはなぜですか?

  26. 26

    ここでJavaがCよりも高速に実行されるのはなぜですか?

  27. 27

    コードの1つのサンプルが他のサンプルよりも実行に時間がかかるのはなぜですか?

  28. 28

    非同期コードが同期よりもはるかに高速であると見なされるのはなぜですか?

  29. 29

    アプリケーションが上から下に実行されるのはなぜですか

ホットタグ

アーカイブ