<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
"ast" <nomail@yahoo.com> a écrit dans le message de
news:4d11f45c$0$17793$426a74cc@news.free.fr...
<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
On 12/22/2010 01:58 PM, ast wrote:
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
On 12/22/2010 01:58 PM, ast wrote:
"ast" <nomail@yahoo.com> a écrit dans le message de
news:4d11f45c$0$17793$426a74cc@news.free.fr...
<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
On 12/22/2010 01:58 PM, ast wrote:
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
On 12/22/2010 01:58 PM, ast wrote:
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond) { i++; } puisque cond est
toujours true.
On 12/22/2010 01:58 PM, ast wrote:
"ast" <nomail@yahoo.com> a écrit dans le message de
news:4d11f45c$0$17793$426a74cc@news.free.fr...
<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond) { i++; } puisque cond est
toujours true.
On 12/22/2010 01:58 PM, ast wrote:
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond) { i++; } puisque cond est
toujours true.
On 12/22/2010 03:08 PM, NewsReader wrote:On 12/22/2010 01:58 PM, ast wrote:
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
}
document.formu.cadran.value = i;
On 12/22/2010 03:08 PM, NewsReader wrote:
On 12/22/2010 01:58 PM, ast wrote:
"ast" <nomail@yahoo.com> a écrit dans le message de
news:4d11f45c$0$17793$426a74cc@news.free.fr...
<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
}
document.formu.cadran.value = i;
On 12/22/2010 03:08 PM, NewsReader wrote:On 12/22/2010 01:58 PM, ast wrote:
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
}
document.formu.cadran.value = i;
"NewsReader" a écrit dans le message de
news:4d120678$0$27725$On 12/22/2010 01:58 PM, ast wrote:
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle
while(cond) { i++; } puisque cond est toujours true.
Ben à 10 ms, il y a la fonction Stop_ qui devrait se déclencher
"NewsReader" <newsreader@news.fr> a écrit dans le message de
news:4d120678$0$27725$426a34cc@news.free.fr...
On 12/22/2010 01:58 PM, ast wrote:
"ast" <nomail@yahoo.com> a écrit dans le message de
news:4d11f45c$0$17793$426a74cc@news.free.fr...
<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle
while(cond) { i++; } puisque cond est toujours true.
Ben à 10 ms, il y a la fonction Stop_ qui devrait se déclencher
"NewsReader" a écrit dans le message de
news:4d120678$0$27725$On 12/22/2010 01:58 PM, ast wrote:
"ast" a écrit dans le message de
news:4d11f45c$0$17793$<HTML>
<BODY>
<FORM NAME="formu">
<INPUT NAME="cadran" TYPE="text" SIZE="32" VALUE="0" READONLY>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
var cond = true;
var i = 0;
var id = null;
var texte = "";
id = setTimeout("Stop_();",10);
while (cond) {
i++;
}
function Stop_() {
cond = false;
texte = texte + i;
document.formu.cadran.value = texte;
}
</SCRIPT>
</BODY> </HTML>
Le but de ce programme était de voir combien de fois la variable
i pouvait être incrémentée en 10 ms.
ça ne marche pas, le navigateur reste bloqué. Pourtant la fonction Stop_
arrête tout après 10 ms.
Ca ne marche pas parce que tu ne ressort jamais de la boucle
while(cond) { i++; } puisque cond est toujours true.
Ben à 10 ms, il y a la fonction Stop_ qui devrait se déclencher
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
On 22/12/10 14:23, NewsReader wrote:Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
La question est donc plutôt : pourquoi la valeur de la variable cond
n'est pas mise à jour.Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
Si l'OP utilisait un timer, c'est certainement pour mesurer combien
d'itération peuvent être faites dans un délais donné. Avec ta méthode,
le résultat est simplement faux puisqu'il comprend des instanciations,
et tout un tas d'opérations qui prennent du temps.
Ceci dit, en règle générale, pour mesurer combien d'opérations peuvent
être effectuées durant un laps de temps, on préférera effectuer
l'opération un certains nombre de fois et de mesurer le temps qu'on
prises les exécutions.
var start = Date()
var n = 10000
var i = n
do i++ while(i < n)
var end = Date()
var delta = end - start
var op_per_sec = n / delta.milliseconds / 1000
Mais avec tout ça nous avons toujours un problème sur les bras :
pourquoi la boucle while continue alors que la variable cond est mise à
false. Car si on ajoute un callback qui se déclenche plus tard pour lire
la valeur, on se rend compte que cond est bien à false.
Moi ça m'intéresse de savoir d'où vient ce fonctionnement (et dire que
c'est parce que c'est un langage de script montre une bien faible
connaissance du sujet).
J'ai fait plusieurs essais. Et il semblerait que ce ne soit pas le
mécanisme de closure qui part en couille. Car même si je pose cond sur
l'objet global, la boucle while ne voit pas sa mise à jour.
On 22/12/10 14:23, NewsReader wrote:
Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
La question est donc plutôt : pourquoi la valeur de la variable cond
n'est pas mise à jour.
Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
Si l'OP utilisait un timer, c'est certainement pour mesurer combien
d'itération peuvent être faites dans un délais donné. Avec ta méthode,
le résultat est simplement faux puisqu'il comprend des instanciations,
et tout un tas d'opérations qui prennent du temps.
Ceci dit, en règle générale, pour mesurer combien d'opérations peuvent
être effectuées durant un laps de temps, on préférera effectuer
l'opération un certains nombre de fois et de mesurer le temps qu'on
prises les exécutions.
var start = Date()
var n = 10000
var i = n
do i++ while(i < n)
var end = Date()
var delta = end - start
var op_per_sec = n / delta.milliseconds / 1000
Mais avec tout ça nous avons toujours un problème sur les bras :
pourquoi la boucle while continue alors que la variable cond est mise à
false. Car si on ajoute un callback qui se déclenche plus tard pour lire
la valeur, on se rend compte que cond est bien à false.
Moi ça m'intéresse de savoir d'où vient ce fonctionnement (et dire que
c'est parce que c'est un langage de script montre une bien faible
connaissance du sujet).
J'ai fait plusieurs essais. Et il semblerait que ce ne soit pas le
mécanisme de closure qui part en couille. Car même si je pose cond sur
l'objet global, la boucle while ne voit pas sa mise à jour.
On 22/12/10 14:23, NewsReader wrote:Ca ne marche pas parce que tu ne ressort jamais de la boucle while(cond)
{ i++; } puisque cond est toujours true.
La question est donc plutôt : pourquoi la valeur de la variable cond
n'est pas mise à jour.Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
Si l'OP utilisait un timer, c'est certainement pour mesurer combien
d'itération peuvent être faites dans un délais donné. Avec ta méthode,
le résultat est simplement faux puisqu'il comprend des instanciations,
et tout un tas d'opérations qui prennent du temps.
Ceci dit, en règle générale, pour mesurer combien d'opérations peuvent
être effectuées durant un laps de temps, on préférera effectuer
l'opération un certains nombre de fois et de mesurer le temps qu'on
prises les exécutions.
var start = Date()
var n = 10000
var i = n
do i++ while(i < n)
var end = Date()
var delta = end - start
var op_per_sec = n / delta.milliseconds / 1000
Mais avec tout ça nous avons toujours un problème sur les bras :
pourquoi la boucle while continue alors que la variable cond est mise à
false. Car si on ajoute un callback qui se déclenche plus tard pour lire
la valeur, on se rend compte que cond est bien à false.
Moi ça m'intéresse de savoir d'où vient ce fonctionnement (et dire que
c'est parce que c'est un langage de script montre une bien faible
connaissance du sujet).
J'ai fait plusieurs essais. Et il semblerait que ce ne soit pas le
mécanisme de closure qui part en couille. Car même si je pose cond sur
l'objet global, la boucle while ne voit pas sa mise à jour.
On 12/22/2010 10:20 PM, Mickaël Wolff wrote:On 22/12/10 14:23, NewsReader wrote:Ca ne marche pas parce que tu ne ressort jamais de la boucle
while(cond)
{ i++; } puisque cond est toujours true.
La question est donc plutôt : pourquoi la valeur de la variable cond
n'est pas mise à jour.Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
Si l'OP utilisait un timer, c'est certainement pour mesurer combien
d'itération peuvent être faites dans un délais donné. Avec ta méthode,
le résultat est simplement faux puisqu'il comprend des instanciations,
et tout un tas d'opérations qui prennent du temps.
Ceci dit, en règle générale, pour mesurer combien d'opérations peuvent
être effectuées durant un laps de temps, on préférera effectuer
l'opération un certains nombre de fois et de mesurer le temps qu'on
prises les exécutions.
var start = Date()
var n = 10000
var i = n
do i++ while(i < n)
var end = Date()
var delta = end - start
var op_per_sec = n / delta.milliseconds / 1000
Mais avec tout ça nous avons toujours un problème sur les bras :
pourquoi la boucle while continue alors que la variable cond est mise à
false. Car si on ajoute un callback qui se déclenche plus tard pour lire
la valeur, on se rend compte que cond est bien à false.
Moi ça m'intéresse de savoir d'où vient ce fonctionnement (et dire que
c'est parce que c'est un langage de script montre une bien faible
connaissance du sujet).
J'ai fait plusieurs essais. Et il semblerait que ce ne soit pas le
mécanisme de closure qui part en couille. Car même si je pose cond sur
l'objet global, la boucle while ne voit pas sa mise à jour.
Mickael,quelques remarques:
- OK avec toi pour dire que la méthode que je propose n'est pas valable
pour un test de performance exactement pour les raisons que tu évoques
(opérations 'connexes' au sein de la boucle); c'était juste pour donner
un exemple "quick and dirty" de la fonctionalité.
- La raison pour laquelle cond n'est jamais mise à false : pour le
comprendre, il faudrait déjà commencer par comprendre la nature de
javascript ...
Contrairement à d'autres langages qui sont "multi-tâches", javascript
est un langage interprété "mono-tâche" (single-threaded). Pour faire
simple, l'interpreteur n'execute qu'une seule instructtion à la fois et
de manière séquentielle au cours d'une "boucle d'évènements" (event
loop). Les actions "asynchrones" comme les callback et les timers sont
aussi exécutées de manière séquentielle, c'est à dire lorsque
l'instruction précédente est terminée.
Dans le cas qui nous intéresse, le timer est bien enregistré mais n'est
jamais exécuté puisque la boucle d'exécution (event loop) ne sort jamais
de la boucle while.
Voilà ce que, avec ma très faible connaissance du sujet, je voulais dire
en faisant allusion au "script" de javascript. Mais je n'apprend sans
doute rien à un expert comme toi.
On 12/22/2010 10:20 PM, Mickaël Wolff wrote:
On 22/12/10 14:23, NewsReader wrote:
Ca ne marche pas parce que tu ne ressort jamais de la boucle
while(cond)
{ i++; } puisque cond est toujours true.
La question est donc plutôt : pourquoi la valeur de la variable cond
n'est pas mise à jour.
Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
Si l'OP utilisait un timer, c'est certainement pour mesurer combien
d'itération peuvent être faites dans un délais donné. Avec ta méthode,
le résultat est simplement faux puisqu'il comprend des instanciations,
et tout un tas d'opérations qui prennent du temps.
Ceci dit, en règle générale, pour mesurer combien d'opérations peuvent
être effectuées durant un laps de temps, on préférera effectuer
l'opération un certains nombre de fois et de mesurer le temps qu'on
prises les exécutions.
var start = Date()
var n = 10000
var i = n
do i++ while(i < n)
var end = Date()
var delta = end - start
var op_per_sec = n / delta.milliseconds / 1000
Mais avec tout ça nous avons toujours un problème sur les bras :
pourquoi la boucle while continue alors que la variable cond est mise à
false. Car si on ajoute un callback qui se déclenche plus tard pour lire
la valeur, on se rend compte que cond est bien à false.
Moi ça m'intéresse de savoir d'où vient ce fonctionnement (et dire que
c'est parce que c'est un langage de script montre une bien faible
connaissance du sujet).
J'ai fait plusieurs essais. Et il semblerait que ce ne soit pas le
mécanisme de closure qui part en couille. Car même si je pose cond sur
l'objet global, la boucle while ne voit pas sa mise à jour.
Mickael,quelques remarques:
- OK avec toi pour dire que la méthode que je propose n'est pas valable
pour un test de performance exactement pour les raisons que tu évoques
(opérations 'connexes' au sein de la boucle); c'était juste pour donner
un exemple "quick and dirty" de la fonctionalité.
- La raison pour laquelle cond n'est jamais mise à false : pour le
comprendre, il faudrait déjà commencer par comprendre la nature de
javascript ...
Contrairement à d'autres langages qui sont "multi-tâches", javascript
est un langage interprété "mono-tâche" (single-threaded). Pour faire
simple, l'interpreteur n'execute qu'une seule instructtion à la fois et
de manière séquentielle au cours d'une "boucle d'évènements" (event
loop). Les actions "asynchrones" comme les callback et les timers sont
aussi exécutées de manière séquentielle, c'est à dire lorsque
l'instruction précédente est terminée.
Dans le cas qui nous intéresse, le timer est bien enregistré mais n'est
jamais exécuté puisque la boucle d'exécution (event loop) ne sort jamais
de la boucle while.
Voilà ce que, avec ma très faible connaissance du sujet, je voulais dire
en faisant allusion au "script" de javascript. Mais je n'apprend sans
doute rien à un expert comme toi.
On 12/22/2010 10:20 PM, Mickaël Wolff wrote:On 22/12/10 14:23, NewsReader wrote:Ca ne marche pas parce que tu ne ressort jamais de la boucle
while(cond)
{ i++; } puisque cond est toujours true.
La question est donc plutôt : pourquoi la valeur de la variable cond
n'est pas mise à jour.Une manière de faire:
var start = new Date();
var stop = false;
var i = 0;
while (stop === false) {
i++;
var elapsed = new Date() - start;
stop = (elapsed > 10) ? true:false;
Si l'OP utilisait un timer, c'est certainement pour mesurer combien
d'itération peuvent être faites dans un délais donné. Avec ta méthode,
le résultat est simplement faux puisqu'il comprend des instanciations,
et tout un tas d'opérations qui prennent du temps.
Ceci dit, en règle générale, pour mesurer combien d'opérations peuvent
être effectuées durant un laps de temps, on préférera effectuer
l'opération un certains nombre de fois et de mesurer le temps qu'on
prises les exécutions.
var start = Date()
var n = 10000
var i = n
do i++ while(i < n)
var end = Date()
var delta = end - start
var op_per_sec = n / delta.milliseconds / 1000
Mais avec tout ça nous avons toujours un problème sur les bras :
pourquoi la boucle while continue alors que la variable cond est mise à
false. Car si on ajoute un callback qui se déclenche plus tard pour lire
la valeur, on se rend compte que cond est bien à false.
Moi ça m'intéresse de savoir d'où vient ce fonctionnement (et dire que
c'est parce que c'est un langage de script montre une bien faible
connaissance du sujet).
J'ai fait plusieurs essais. Et il semblerait que ce ne soit pas le
mécanisme de closure qui part en couille. Car même si je pose cond sur
l'objet global, la boucle while ne voit pas sa mise à jour.
Mickael,quelques remarques:
- OK avec toi pour dire que la méthode que je propose n'est pas valable
pour un test de performance exactement pour les raisons que tu évoques
(opérations 'connexes' au sein de la boucle); c'était juste pour donner
un exemple "quick and dirty" de la fonctionalité.
- La raison pour laquelle cond n'est jamais mise à false : pour le
comprendre, il faudrait déjà commencer par comprendre la nature de
javascript ...
Contrairement à d'autres langages qui sont "multi-tâches", javascript
est un langage interprété "mono-tâche" (single-threaded). Pour faire
simple, l'interpreteur n'execute qu'une seule instructtion à la fois et
de manière séquentielle au cours d'une "boucle d'évènements" (event
loop). Les actions "asynchrones" comme les callback et les timers sont
aussi exécutées de manière séquentielle, c'est à dire lorsque
l'instruction précédente est terminée.
Dans le cas qui nous intéresse, le timer est bien enregistré mais n'est
jamais exécuté puisque la boucle d'exécution (event loop) ne sort jamais
de la boucle while.
Voilà ce que, avec ma très faible connaissance du sujet, je voulais dire
en faisant allusion au "script" de javascript. Mais je n'apprend sans
doute rien à un expert comme toi.