2017-03-20 10 views
0

このjsコードはほとんど実行されませんが、実行に時間がかかります。時間が実行されるたびに時間が変わるだけでなく、何もしないのに時間がかかるのはなぜですか?

<!DOCTYPE html> 
 
<html> 
 
<head><title>Measure Time</title></head> 
 
<body> 
 
<script> 
 
var t0 = performance.now(); 
 
//Literally Nothing 
 
var t1 = performance.now(); 
 
document.write((t1-t0)+" ms"); 
 
</script> 
 
</body> 
 
</html>

+3

https://jsfiddle.net/bt6dejza/ここには0msがあります。 – Li357

+0

t1-t0に変更され、まだ時間が変わります – nightlynutria

+7

ええ、まあ、そうではありません*文字通り何もしない*。 'performance.now'を* something *と呼んでいます。 –

答えて

4

コンピュータのすべてを実行するための時間のいくつかの並べ替えを取るので、それを実行するには時間がかかります。

これは(あなたがASCIIでそれを提供しているので)スクリプトを解析し、コードとして、それを実行しているブラウザを含めることができます。これには、変数のための領域の割り当てや、関数呼び出しを呼び出しスタックに追加することが含まれます。

Performance.nowは、私が間違っていない場合は、システムコールを必要とする、現在の時刻を取得しています。これは、ブラウザが現在の時刻をOSに尋ねなければならないことを意味します。

ランタイムが変化する最大の理由は、しかし、理由スケジューリングです。

それはブラウザが同時にそれらの二行次々に実行されないことが可能です。ブラウザは1行実行して、何か他のことをしてからもう一度やり直して実行するかもしれません。ブラウザが両方の行を順番に実行しようとする可能性がありますが、OSはブラウザが実行しようとしているコードの実行を一時停止して、他のプログラムがそれを実行させるようにします。お使いのコンピュータが同時にたくさんのことを行うことができますように

それは見えるかもしれませんが、現実的に、各プロセッサ・コアは、一度に1つのプログラムを実行することができます。あなたのコンピュータでは、プログラムをすばやく切り替えることで、多くのことが同時に起こっているように見えます。

各プログラムが取得する時間の量は、OSを書いた人によって決まる多くの要因に基づいて変化します。このため、リアルタイムで実行するコードの所要時間を予測することは非常に困難です。

+1

これは私が探していた答えでした。みんな、ありがとう。 – nightlynutria

関連する問題